我在socket.io开发中遇到了一个非常奇怪的问题。
一切正常(发送到服务器/从服务器发出),除了从3G连接服务器执行以下操作:
console.log( io.sockets.adapter.rooms['thisroom'] )
这条线几乎每次都会返回一个未定义的类型,就好像在给定的' thisroom'中没有插座连接的地方一样。实际上有连接房间插座的房间。
如果从WIFI连接执行相同的代码,在相同的情况下,连接相同的套接字,上面的行返回如下内容:
房间{套接字:{' /#wEkHFuAhbCEf1Dw2AAAC':true},长度:1}
这是正确的。
我已经尝试过这一切:
尝试socket.io版本1.3.7
尝试socket.io版本1.4.8
尝试与
联系var socket = io.connect("http://<ip>:8081");
尝试仅使用以下方法强制进行websockets传输:
var socket = io.connect("http://<ip>:8081", {transports: ['websocket']});
尝试使用两种传输方式:
var socket = io.connect("http://<ip>:8081", {transports: ['websocket', 'polling']});
没有任何效果。
这真的很奇怪,因为有时候,只需重新启动应用程序,3G连接就可以正常工作。但大多数时候,它确实有效。
想法?
答案 0 :(得分:0)
我只是通过使用SSL的安全连接设法使其工作。在SSL下,io.sockets.adapter.rooms [&#39; thisroom&#39;]每次都可以在任何3G连接中使用。