Javascript socket.io-尽管iPad已连接,但它始终会超时

Javascript socket.io-尽管iPad已连接,但它始终会超时,javascript,ipad,node.js,socket.io,Javascript,Ipad,Node.js,Socket.io,我有一个带有node.js和socket.io的简单聊天应用程序: 如果客户端从PC进入网站,它可以完美工作。如果客户端使用IPad(ios 5.1/最新的Chrome/safari),它只在某些时候工作。大多数情况下,网页被加载后,iPad就会连接,但需要很长时间,服务器才会关闭连接。然后iPad获得了一个新的连接,但无法真正初始化会话。它会定期断开连接并再次尝试重新连接 这里是socket.io的protocoll: 客户端代码: socket = io.connect(http://4

我有一个带有node.js和socket.io的简单聊天应用程序:

如果客户端从PC进入网站,它可以完美工作。如果客户端使用IPad(ios 5.1/最新的Chrome/safari),它只在某些时候工作。大多数情况下,网页被加载后,iPad就会连接,但需要很长时间,服务器才会关闭连接。然后iPad获得了一个新的连接,但无法真正初始化会话。它会定期断开连接并再次尝试重新连接

这里是socket.io的protocoll:

客户端代码:

socket = io.connect(http://42.58.240.427:4000);
socket.on('connect', function(){

  send('init');
});
服务器代码:

io.sockets.on('connection', function (socket) {

socket.on('init', function(){

    console.log("Good morning new User");
});


socket.on('disconnect', function(){

    requesthandler['disconnect'](socket, io);

});

我猜这是由于浏览器websocket的支持。iOS Safari(5.0-5.1)浏览器实现了较旧的websocket协议(Hixie-76)。因此,它仅部分支持websocket。请参见websocket支持

当你说它有时有效时,很有可能它又回到了长时间投票。它可以通过这种方式连接,但可能存在超时问题。请参阅本文中websocket和长轮询之间的区别。默认情况下会重新连接。但是超时将会发生

因此,最好将浏览器升级到完全支持WebSocket的最新版本


来源:

您知道如何获得支持iPad1 WebSocket的浏览器吗?根据你的解释,iPad1的最新Chrome正在进行长时间的轮询?我对移动Chrome版本没有任何经验,而且它对于iOS平台来说相对较新。我找不到任何方法使它工作。你尝试了哪个版本的chrome?@poppel chrome for ipad是围绕safari使用的同一个引擎的chrome包装