Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Socket.io 通过xhr轮询和jsonp轮询超时进行连接_Socket.io_Socket.io 1.0 - Fatal编程技术网

Socket.io 通过xhr轮询和jsonp轮询超时进行连接

Socket.io 通过xhr轮询和jsonp轮询超时进行连接,socket.io,socket.io-1.0,Socket.io,Socket.io 1.0,我试着通过websocket和轮询运行我的socket.io程序,它们都能工作。但是,当尝试运行xhr轮询时,它会超时。可能的原因是什么 对于这个程序,我使用socket.io 1.2.1 var options = {"force new connection":true, "reconnect":false, "connect timeout":10000, "flash policy port":84

我试着通过websocket和轮询运行我的socket.io程序,它们都能工作。但是,当尝试运行xhr轮询时,它会超时。可能的原因是什么

对于这个程序,我使用socket.io 1.2.1

var options = {"force new connection":true,
               "reconnect":false,
               "connect timeout":10000,
               "flash policy port":843,
               "auto connect":true,
               "path":"/sample/socket.io",
               "transports":["xhr-polling"]}

this.namespace = io.connect( 'http://localhost:8190/', options);
到目前为止,我的研究没有得到任何关于这个问题的信息

编辑:

这是浏览器上的一段日志

socket.io-client:url parse http://localhost:8190/ +0ms
socket.io.js:1284 socket.io-client ignoring socket cache for http://localhost:8190/ +0ms
socket.io.js:1284 socket.io-client:manager readyState closed +0ms
socket.io.js:1284 socket.io-client:manager opening http://localhost:8190/ +0ms
socket.io.js:3524 engine.io-client:socket creating transport "xhr-polling" +0ms
socket.io.js:1284 socket.io-client:manager connect attempt will timeout after 20000 +4ms
socket.io.js:1284 socket.io-client:manager readyState opening +1ms
socket.io.js:1284 socket.io-client:manager connect_error +3ms
socket.io.js:1284 socket.io-client:manager will wait 1000ms before reconnect attempt +2ms
socket.io.js:1284 socket.io-client:manager attempting reconnect +1s
socket.io.js:1284 socket.io-client:manager readyState closed +0ms
socket.io.js:1284 socket.io-client:manager opening http://localhost:8190/ +1ms
socket.io.js:1284 socket.io-client:manager connect attempt will timeout after 20000 +0ms

这段日志不断重复,同时不断增加超时时间。

我发现这是因为Socket.IO版本1.0+实际上不允许在[websocket and polling]之外设置传输。将轮询设置为传输默认为轮询xhr,除非在选项中将属性forceJSONP和/或jsonp设置为true

换言之,代码应为:

var options = {"force new connection":true,
               "reconnect":false,
               "connect timeout":10000,
               "flash policy port":843,
               "auto connect":true,
               "path":"/sample/socket.io",
               "transports":["polling"]}

this.namespace = io.connect( 'http://localhost:8190/', options);
还要注意,“自动连接”现在是自动连接,“强制新建连接”现在是强制新建,“连接超时”现在是超时,“重新连接”现在是“重新连接”

var options = {forceNew :true,
               reconnection :false,
               timeout":10000,
               "flash policy port":843,
               autoConnect:true,
               "path":"/sample/socket.io",
               "transports":["polling"]}