2016-07-06 9 views
0

ここではsocket.ioの開発には本当に奇妙な問題があります。socket.io io.sockets.adapter.rooms [room in 3G]は動作しません

すべてがうまく働いサーバは次の処理を行い、3G接続からそれ以外(サーバーへ/から放出される):

console.log(io.sockets.adapter.rooms['thisroom']) 

このライン、ほとんど毎回、「未定義」のtypeof演算を返し、実際に部屋に接続されているソケットがある場合、指定された 'thisroom'ルームに接続されていないソケットがあるかのように。

同じコードが接続され、同じソケットと、同じ状況下で、WIFI接続から実行された場合、上記の行のようなものを返す:

ルーム{ソケット:{「​​/#wEkHFuAhbCEf1Dw2AAAC」: true}、length:1}

これは正しいです。

私がようにこれですべてのものを試してみた:

socket.ioしようとしましたバージョン1.3.7

socket.ioしようとしましたバージョン1.4.8

var socket = io.connect("http://<ip>:8081"); 
に接続しようとしました

ウェブスロットの移動を強制的に試行しました:

var socket = io.connect("http://<ip>:8081", {transports: ['websocket']}); 

として2つのトランスポートを使用しようとしました:何も働いていない

var socket = io.connect("http://<ip>:8081", {transports: ['websocket', 'polling']}); 

時々、アプリケーションを再起動するだけで3G接続が正常に機能するので、本当に変です。しかし、ほとんどの場合、それは動作します。

アイデア?

+1

3Gでは、「http」リクエストを「修正」しようとすると、WebSocket実装がトラックからスローされることがあります... TLSを使用してサードパーティのデータ注入を防止しようとしましたか? – Myst

+0

3Gネットワ​​ークがあなたのIPアドレスとポートにアクセスできることは確かですか? 3Gネットワ​​ーク接続はファイアウォールの外側から来るが、WiFiネットワーク接続はファイアウォール/ルータ内部から来ることに注意してください。 – jfriend00

+0

クライアントサイドのデバッグを行って、クライアントが接続されていると思っているかどうか確認しましたか?そして、着信接続とルーム作成のサーバーログはどうでしょうか? 3Gネットワ​​ークのクライアントとサーバーの両方で何が表示されますか? – jfriend00

答えて

0

SSLを使ったセキュリティで保護された接続を使用することで、問題なく動作するようになりました。 SSLの下では、io.sockets.adapter.rooms ['thisroom']はあらゆる3G接続で毎回動作します。

関連する問題