問題タブ [socket.io-redis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3508 参照

socket.io - socket.io-redis はどのように部屋を処理しますか?

複数のプロセスがあり、socket.io-redis を使用している場合、io.to(room).emit(namespace, message);これはシームレスかつ効率的に処理されますか? それとも、socket.io-redis の役割を誤解していますか?

0 投票する
0 に答える
395 参照

node.js - VVV を使用した Socket.io - クライアントでメッセージが受信されない

socket-io-redis で VVV (Vagrant) を実行しています。これは機能しているようで、メッセージは Redis に送信されています。

テストSUBSCRIBE socket.io#/#用に一連のメッセージをログに記録しているテストを行います。

これは、ターミナルで表示される応答の例です -

1) "message" 2) "socket.io#/#" 3) "\x93\xa7emitter\x83\xa4type\x02\xa4data\x92\xa4time\xb82016-04-03T22:17:21.478Z\xa3nsp\xa1/\x82\xa5rooms\x90\xa5flags\x80"

ノード JS -

クライアント -

Node アプリを実行するConnectionと、ブラウザのコンソールにメッセージが表示されますConnected(次に、デバッグ用のソケット)。

クライアントが接続し、エミッターが動作しているように見えます。しかし、発行されたものはクライアントによって受信されることはありません。

何か不足していますか?Vagrant を実行しているため、IP はローカル ホストではありません。

アドバイスをいただければ幸いです。ありがとう!

編集

簡単な更新です。使用socket.io-emitterせずに発行できますが、Redis を経由しません。エミッターを使用すると、上記のように Redis を正しく通過します。

ポートが開いているにもかかわらず、クライアントが Redis からメッセージを受信して​​いないようです。

これが私が試すことです-

私のブラウザでは、他に何も表示Nopeされません。次に、monitorRedis を実行すると、次のように表示されます -

"publish" "socket.io#/#" "\x93\xa7emitter\x83\xa4type\x02\xa4data\x92\xa8new_post\xa3Yep\xa3nsp\xa1/\x82\xa5rooms\x90\xa5flags\x90"

Redis を使用している場合、私のサーバーにもメッセージが表示されません。

0 投票する
1 に答える
1275 参照

javascript - node jsを使ってライブチャットを開発する方法

node jsを使ってライブチャットを開発したいです。誰でもこれを行う方法を教えてもらえますか? 私が決めたユースケース:

  1. アプリ画面に「オンライン チャット サポート」というリンクまたはアイコンが表示されます。
  2. これをクリックすると、チャットウィンドウが開きます。オンラインで準備ができているエージェントの名前を示すか、エージェントがビジーであることを示し、エージェントが応対可能になるとそのステータスを変更します。
  3. エージェント側では、別のユーザーに対してビジー メッセージが生成される前に、最大 3 つのウィンドウ (3 人のユーザーから) が開かれます。この数 (3) は構成可能です。
  4. エージェントは、ユーザーが ping を送信している画面の名前を取得します。
  5. 複数のエージェントが存在するため、一連の画面 (またはアプリ) を特定のエージェントにタグ付けする機能が必要です。
  6. 新しいクエリが空いているエージェントにルーティングされ、その画面またはアプリにタグ付けされる負荷分散メカニズムが必要です。
  7. 「特定の時間枠で利用できないメッセージを設定する機能が必要です。チャット サポートが IST の午前 9 時から午後 6 時までしか利用できない場合は、この時間枠外にログインするユーザーに対して、次のようなメッセージを設定できるはずです。オンライン チャット サポートは、次の間でのみご利用いただけます。""

進め方を教えてください。

0 投票する
1 に答える
775 参照

node.js - NodeJS Socket.io サーバー<-->サーバー通信

socket.io を使用して、NodeJS (クラスター アーキテクチャ、個別の VM) でサーバー間通信を確立しようとしています。ここに投稿されているものを使用しようとしていますhttp://socket.io/docs/using-multiple-nodes/

だから私は(おそらく間違っている)そうするときio.emit("message", "some example message")にそれを聞くことができると思います:

1 つのサーバー (node_app) を実行し、別のサーバーでイベントを送信すると、デバッグ メッセージが表示されます。

それぞれの間の通信を実現したいnode_app(キャッシュの無効化など):

ここに画像の説明を入力

0 投票する
0 に答える
141 参照

node.js - socket.io-redis モジュールでソケットをリッスンする

モジュールを使用すると、socket.io-redis簡単にemit/broadcastメッセージを送信できますsaved-socket-id

一方、余分な/外部のredisサブ/パブクライアントなしでソケットをリッスンするための最良の方法は何ですか.

モジュールを初期化したときsocket-io.redis、サブスクライバーを return_buffers: trueで構成しました。モジュールは舞台裏でそれを解決すると思いますが、例が見つかりませんでした。

socket.io-redismoduleでそれを行うスムーズな方法はありますか? または、各クラスターのソケットリスナーがメッセージを発行する必要があり、他のクラスターから手動でサブスクライブする必要がありますか?

ありがとうございました。

0 投票する
2 に答える
2390 参照

javascript - redis-server offline でノードがクラッシュする

私はここで楽しい時間を過ごしています。私は非常に多くのドキュメントを読み、同じトピックに関する他の人々の質問を読みましたが、これが起こらないようにする方法についての答えを見つけることができません. 私は意図的にredisサーバーをシャットダウンして、本番環境でアプリケーションが完全に非核化されないようにしていますが、それを止めることは何もしていないようです. これは、私のコードが現在何であるかの非常に簡単な例です...

次に、redis-server を起動し、このサーバーで node.js を起動します。次に、ターミナル ウィンドウを開き、「redis-cli shutdown」と入力して、redis サーバーを強制的にオフラインにします。これを行うとすぐに、node.js ターミナル ウィンドウが狂って、同じエラーが何度も繰り返されます。

私は process.on('uncaughtException' ... と io.on('uncaughtException' ... と io.on('error', ... ハンドラー) の両方を持っていますが、サーバーがそこにループするたびに「未処理の「エラー」イベントがあると言っています。誰かがここで私を助けてくれますか。これがどのように未処理のエラーになるのかわかりません。何らかの理由で意味がありません。よろしくお願いします。私は他の可能なオプションを見つけようとして何時間もインターウェブに行ってきましたが、それらはすべて同じことを言います, io.on('error', or io.on('uncaughtException', or process.on('uncaughtException', 私はそれらをすべて持っていますが、それでもエラーが発生し、ノードがクラッシュします。

0 投票する
1 に答える
872 参照

javascript - グローバル配列 + Node.js に socket.io を格納する

socket.io のすべての発行をグローバル配列に格納して、新しいユーザーが Web サイトに参加したときに発行をループして、現在の「キャンバス描画」の場所を取得できるようにする方法はありますか。新しいユーザーには、すでに行われた作業を確認してから、共同作業してもらいたいと考えています。

これに向けてアプローチできる他の方法はありますか?

0 投票する
0 に答える
896 参照

amazon-web-services - EC2 ソケット接続

EC2とlaravelでsocket.ioを使ってみました。

これがサーバー側の私のコードです-server.js

ローカルホストでテストすると、すべて問題ありません。連結して発光できます。

ローカルホストにnode server.jsすると、結果は次のようになります。

しかしnode server.js、EC2 インスタンスで実行すると、結果は次のようになります。socket.io に接続できないようです。

EC2 インスタンスに redis、node、npm、express を既にインストールし、それらが実行されていることをテストしました。

このようにポート 8890 のインスタンスのセキュリティ グループも設定しました。

手順がありませんか?助けてください。どうもありがとう。

0 投票する
2 に答える
5914 参照

javascript - laravel 5.2でsocket.ioを使用して接続しているときにio.onが機能しない

io.on関数を接続しているときに、問題に直面しています(本当にイライラしています)。Express、ioredis、およびsocket.ioを使用しています。redis は正常に動作していますが、socket.io は動作していません。機能していません。助けてください。

クライアント側