タグ付けされた質問 「socket.io」

Socket.IOは、さまざまなトランスポートメカニズムの違いをぼかして、すべてのブラウザーとモバイルデバイスでリアルタイムアプリを可能にすることを目的としています。WebSocket、Flashソケット、ロングポーリングなどの複数のトランスポートをサポートし、トランスポートが失敗すると自動的にフォールバックします。


5
最も簡単なSocket.ioの例の例は何ですか?
だから、私は最近Socket.ioを理解しようとしていますが、私はすばらしいプログラマではありません。Webで見つけることができるほとんどすべての例(何時間も探していたと思います)には、物事を複雑にする追加の要素があります。多くの例では、私を混乱させたり、奇妙なデータベースに接続したり、コーヒースクリプトや大量のJSライブラリを使用して混乱させたりすることがたくさんあります。 私は、サーバーが10秒ごとにクライアントに何時であるかを伝えるメッセージを送信し、クライアントがそのデータをページに書き込むか、非常に単純なアラートをスローする、基本的で機能的な例を見たいと思います。次に、そこから物事を理解し、db接続などの必要なものを追加できます。そして、はい、socket.ioサイトで例を確認しましたが、それらは私にとっては機能せず、それらが何をするのか理解できません。
113 node.js  socket.io 


2
JWTを使用したソケットio接続の認証
socket.io接続を認証するにはどうすればよいですか?私のアプリケーションは別のサーバー(Python)からのログインエンドポイントを使用してトークンを取得しますが、ユーザーがノード側でソケット接続を開くたびにそのトークンを使用するにはどうすればよいですか? io.on('connection', function(socket) { socket.on('message', function(message) { io.emit('message', message); }); }); そしてクライアント側: var token = sessionStorage.token; var socket = io.connect('http://localhost:3000', { query: 'token=' + token }); トークンがPythonで作成されている場合: token = jwt.encode(payload, SECRET_KEY, algorithm='HS256') このトークンを使用してノードのソケット接続を認証するにはどうすればよいですか?
106 node.js  socket.io  jwt  token 

5
Socket.ioルームのbroadcast.toとsockets.inの違い
Socket.ioのreadmeには、次の例が含まれています。 var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket.join('justin bieber fans'); socket.broadcast.to('justin bieber fans').emit('new fan'); io.sockets.in('rammstein fans').emit('new non-fan'); }); 違いは何だsocket.broadcast.to()とはio.sockets.in()?
102 node.js  socket.io 

3
Faye対Socket.IO(およびJuggernaut)
Socket.IOは、最も人気がありアクティブなWebSocketエミュレーションライブラリのようです。Juggernautはそれを使用して完全なpub / subシステムを作成します。 Fayeも人気がありアクティブであり、独自のJavaScriptライブラリを備えているため、Juggernautに匹敵する完全な機能を備えています。Juggernautはサーバーにノードを使用し、Fayeはノードまたはラックを使用できます。Juggernautは永続化にRedisを使用し(訂正: pub / subにRedisを使用)、Fayeは状態をメモリにのみ保持します。 上記はすべて正確ですか? フェイはバイユーを実装していると言います-私はジャガーノートがこれをしないと思います-それはジャガーノートが低レベルだからです(IE、私はジャガーノートを使ってバイユーを実装できます) Fayeは、必要に応じて、Socket.IOブラウザのJavaScriptライブラリを使用するように切り替えることができますか?または、JavaScriptライブラリは根本的に異なることをしますか? プロジェクト間に他のアーキテクチャ/デザイン/哲学の違いはありますか?

3
nodeJS + Socket.IOとPHPを統合する方法
nodeJSとPHPの間で通信するための良い方法を見つけるために、私は最近周りを見回しています。ここにアイデアがあります:nodeJSはまだかなり新しく、それだけで完全なアプリケーションを開発するのはちょっと難しいかもしれません。さらに、リアルタイム通知、チャットなど、プロジェクトの1つのモジュールでのみ必要になる場合があります。他のすべてのものをPHPで管理したい場合は、おそらくより簡単です(そして、 CodeIgniterやSymfonyなどの既存のフレームワーク)。 簡単な解決策が欲しいです。ApacheとNodeサーバー間の通信にcURLまたは3番目のサーバーを使用したくありません。私が欲しいのは、クライアント側の単純なJavascriptでノードからイベントをキャッチできるようにすることです。 完全な場合、ほとんどの場合クライアント側がノードサーバーによって実行されていたため、私の場合には該当しないという答えは見つかりませんでした。だから私はすべての可能なトピックをクロールし、最後に私の答えを見つけました。私はこれを共有し、それがすべて明確であるようにしたいと思います。 これが一部の人々に役立つことを願っています!;)

3
io.sockets.emitとbroadcastの違いは何ですか?
io.sockets.emitとsocket.broadcast.emitの違いは何ですか?ブロードキャストは全員に送信されますが、送信するソケットはそれだけですか? それらは互換的に使用できるようです: io.sockets.on('connection', function (socket) { //these should do the same thing io.sockets.emit('this', { receivers: 'everyone'}); socket.broadcast.emit('this', { receivers: 'everyone but socket'}); //emits to everyone but socket socket.emit('this', { receivers: 'socket'}); //emits to socket });

12
WebSocketsとApacheプロキシ:mod_proxy_wstunnelの構成方法
私が持っています : Apache(v2.4)mod_proxyとmod_proxy_wstunnelを有効にwww.domain1.comして、のサーバーのポート80で node.js + socket.io 同じサーバーのポート3001。 www.domain2.com(ポート80で)アクセスすると、2にリダイレクトされます。ここで説明する方法のおかげです。これをApache構成で設定しました。 <VirtualHost *:80> ServerName www.domain2.com ProxyPass / http://localhost:3001/ ProxyPassReverse / http://localhost:3001/ ProxyPass / ws://localhost:3001/ ProxyPassReverse / ws://localhost:3001/ </VirtualHost> これは、WebSocket部分を除いて、すべてに対して機能しますws://...。プロキシによって送信されるようには送信されません。 のページにアクセスするとwww.domain2.com、次のようになります。 Impossible to connect ws://www.domain2.com/socket.io/?EIO=3&transport=websocket&sid=n30rqg9AEqZIk5c9AABN. 質問:ApacheプロキシをWebSocketにする方法は?

6
socket.ioを使用して特定のクライアントにメッセージを送信する方法
私はsocket.io + node.jsから始めています、メッセージをローカルに送信してsocket.broadcast.emit()関数をブロードキャストする方法を知っています:-接続されているすべてのクライアントが同じメッセージを受信します。 今、私は特定のクライアントにプライベートメッセージを送信する方法を知りたいのですが、私は2人の間のプライベートチャット用の1つのソケットを意味します(クライアントからクライアントへのストリーム)。ありがとう。

8
Express 4およびexpress-generatorの/ bin / wwwでのsocket.ioの使用
だからここに取り引きがあります:私は高速プロジェクトでsocket.ioを使用しようとしています。Express Js 4がリリースされた後、エクスプレスジェネレーターを更新し、アプリの初期関数./bin/wwwをこれらの変数を含めてファイルに入れます(wwwファイルの内容:http : //jsfiddle.net/avMa5/)。 var server = app.listen(app.get('port'), function() {..} (それを確認してnpm install -g express-generatorからexpress myApp そうは言っても、socket.io docsがそれを起動するように要求する方法を覚えておいてください: var app = require('express').createServer(); var io = require('socket.io')(app); わかりましたが、推奨されているように、app.js内ではできません。これを機能させるには、。/ bin / wwwで行う必要があります。./bin/wwwでは、これは私がそれを機能させるためにできることです: var io = require('socket.io')(server) これで問題ありませんが、io varを他の場所で使用することはできませんwww。また、socket.io関数をファイルに配置したくありません。 私は、これは単なる基本的な構文であると思いますが、私は仕事にこれを取得することはできません、でも使用していないmodule.exports = serverかserver.exports = serverもmodule.exports.io = app(io)WWWのファイルに それで問題は、この/ bin / wwwファイルを私のアプリの開始点としてsocket.ioを使用するにはどうすればよいですか?

6
Socket.IO 1.xおよびExpress 4.xとセッションを共有する方法
Socket.io 1.0およびExpress 4.xとセッションを共有するにはどうすればよいですか?私はRedis Storeを使用していますが、問題はないと思います。ミドルウェアを使用してCookieを取得し、セッションを取得する必要があることはわかっていますが、方法がわかりません。検索しましたが、機能しませんでした var RedisStore = connectRedis(expressSession); var session = expressSession({ store: new RedisStore({ client: redisClient }), secret: mysecret, saveUninitialized: true, resave: true }); app.use(session); io.use(function(socket, next) { var handshake = socket.handshake; if (handshake.headers.cookie) { var str = handshake.headers.cookie; next(); } else { next(new Error('Missing Cookies')); } });

4
Socket.IO処理切断イベント
この切断イベントを処理できません。ソケットがクライアントに送信されない/クライアントが応答しない理由がわかりません。 サーバ io.sockets.on('connection', function (socket) { socket.on('NewPlayer', function(data1) { online = online + 1; console.log('Online players : ' + online); console.log('New player connected : ' + data1); Players[data1] = data1; console.log(Players); }); socket.on('DelPlayer', function(data) { delete Players[data]; console.log(Players); console.log('Adios' + data); }); socket.on('disconnect', function () { socket.emit('disconnected'); online = online …


14
Socket.ioクライアント:1つのハンドラーですべてのイベントに応答しますか?
各イベントを個別に指定せずに、socket.ioクライアントにすべてのイベントに応答させることは可能ですか? たとえば、次のようなものです(これは明らかに現在は機能しません): var socket = io.connect("http://myserver"); socket.on("*", function(){ // listen to any and all events that are emitted from the // socket.io back-end server, and handle them here. // is this possible? how can i do this? }); クライアント側のsocket.ioコードがすべてのイベントを受信したときに、このコールバック関数を呼び出す必要があります。 これは可能ですか?どうやって?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.