3

socket.io と websocket (「ws」パッケージから) ハンドラーの間で同じ http サーバーを共有する必要があります。残念なことに、それらは異なるプレフィックスをリッスンしているにもかかわらず、1 つ目は /socket.io をリッスンし、2 つ目は /websocket url をリッスンしています。何らかの理由で、それらが同じサーバー上で実行されている場合、Websocket は正しく機能しません。

私はいくつかのデバッグを行いましたが、リクエストは両方のライブラリで適切に処理されているようですが、最終的には socket.io のみが適切に動作します。

それを解決する方法はありますか?

4

3 に答える 3

0

2016 年の更新:

io.disable('destroy upgrade');

もう利用できないようです。しかし、websocket モジュールにパスを割り当てることで成功しました (Express を使用):

 var wss = new WebSocketServer({ server: server, path: '/ws' }); //do not interfere with socket.io

もちろん、クライアントには同じパス ws://theserver.com/ws があります

socket.io 側をまったく変更する必要はありませんでした。

于 2016-05-11T22:21:39.400 に答える