2017-12-18 20 views
1

私はいくつかのリアルタイム機能を含むアプリケーションを作成しています。フロントエンドにNode.js,SocketIOExpress + Reactを使用します。私のバックエンドはhttpwsの両方の要求を処理します。私はwebpack-dev-serverプロキシオプションを使用して、クライアントの要求をローカルサーバーにリダイレクトします。Socket-ioクライアントは接続要求を送信し続けます

数日前、私はWebpackの設定やバックエンドコードに触れていませんが、クライアント側でio({ path: '/socket' })を呼び出すとバック​​エンドにたくさんの接続要求が送信されます。

理由は、HMR、コンポーネントの再レンダリング、またはクライアント側のループではありません。私はクライアント側がio({ path: '/socket' })を1回だけ呼び出すと確信しています。私がいくつかの古いものにブランチを変更しても(その問題は確かに存在しません)、すべてnode_modulesを再インストールした後も問題は残ります。これはネットワーク/ハードウェアに関連するものでもあります。

enter image description here

これは、ログの一部のみで、一般的に、それは本当に速いの接続保持:私は私のバックエンドはコンソールで生成デバッグモードで6

典型的なログのWindows 10、Node.jsのを使用します停止しません。

ここで何が起こっているのでしょうか?

+1

一般的な理由の1つはあります。これにより、socket.ioがwebSocketへの移行を完了する前にサーバーが切断されます。コードを表示しないので、クライアントサイドのsocket.ioコードをどこから取得しているのか、サーバー上で実行しているものとまったく同じバージョンかどうかはわかりません。 – jfriend00

+0

ありがとうございますが、私は同じバージョンがあります – dominik791

答えて

1

WebSocketが既に使用可能であっても、長いポーリングを使用しているという問題がありました(socket.io)。解決するために、この私はこのような接続オプションにtransports: ['websocket']を渡さ:あなたはsocket.ioのクライアントとサーバーのバージョンが不一致している場合、それは、ポーリングの出ない理由

import io from 'socket.io-client'; 
io({ path: '/socket', transports: ['websocket'] }); 
関連する問題