【问题标题】:Socket.io reverting to XHR / JSONP polling for no apparent reasonSocket.io 无缘无故恢复到 XHR / JSONP 轮询
【发布时间】:2011-10-16 10:34:52
【问题描述】:

我认为 Socket.IO 应该选择找到与服务器连接的最佳方法 在系列中,

  Websocket , 
  FlashSocket  
  and then JSONP

但是我的服务器在节点 0.4.9 的顶部运行 socket.io 0.7.7(在使用 cygwin 编译的 Windows 上)没有任何明显的原因就进入了 XHR/JsonP 轮询。我检查了从 80 到 89 的所有端口,只是为了确定,问题始终保持不变。

我还检查了双方的控制台日志。 Firebug Gives No error 只是向我显示 XHR 获取请求。

在服务器控制台上它给了我:

   info - socket.io started
   debug - client authorised  // i dunno why this is occuring though
   info - handshake autorised 154845454664764
   setting request Get/socket.io/1/xhr-polling/154845454664764
   debug - setting poll timeout

。 . .等等 伙计们有什么理由吗??

【问题讨论】:

  • 你为什么无故投反对票?

标签: javascript node.js socket.io


【解决方案1】:

您使用的可能是Firefox that has WebSockets disabled 的版本。

警告:其中一个关键原因是 WebSockets 当前 在 Firefox 4 和 5 中默认禁用是发现安全性 协议设计中的问题。在这些版本中使用 WebSockets 目前不建议在生产环境中使用 Firefox。 如果您仍想尝试使用 WebSockets,您可以通过 打开 about:config 并设置 network.websocket.enabled 偏爱真实。您还需要设置 network.websocket.override-security-block 偏好设置为 true 允许初始化 WebSocket 连接。

【讨论】:

  • 嗯,它应该支持 Flash 插座权:P。闪存套接字只是作为 websocket 旁边的传输选项存在
  • @Darkyen |哦耶!没错……嗯,flash .swf 是否存在并且可以访问?
  • 它的窗口太糟糕了,但它没有给我一个策略文件输出
  • @freedompeace 应该在哪里访问?我把它放在所有地方。 (html目录,服务器目录无处不在)
  • @freedompeace 你能具体说明我吗,如果 Websocket 不可用,也许是一个关于如何设置 socket.io 以使用 flash 的代码示例
【解决方案2】:

Firefox 确实禁用了 websockets。标准 socket.io 没有 flashsocket,因此您必须将其添加到您的 configuration =>

io.set('transports', [                     // enable all transports (optional if you want flashsocket)
    'websocket'
  , 'flashsocket'
  , 'htmlfile'
  , 'xhr-polling'
  , 'jsonp-polling'
]);

那么它应该可以正常工作。


debug - client authorised  // i dunno why this is occuring though

socket.io 可以做authorization.

【讨论】:

  • 谢谢 ^_^ 我不得不把它移到一个 linux 虚拟机上,但我认为 windows 编译的版本必须有 win7“增强”安全宣传的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-06
  • 1970-01-01
  • 1970-01-01
  • 2018-01-13
  • 2018-03-14
  • 1970-01-01
相关资源
最近更新 更多