socket.io - 虽然已经连接,但iPad总是会超时

时间:2013-05-28 15:39:21

标签: javascript ipad node.js socket.io

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

如果客户从PC进入网站,它将非常有效。如果客户端使用iPad(ios 5.1 /最新的Chrome / safari),它有时只能使用。大多数情况下加载网页,然后iPad连接,但服务器关闭连接需要很长时间。然后iPad获得新连接,但无法真正初始化会话。它会定期断开连接并尝试重新连接。

这里是socket.io的协议: enter image description here

客户代码:

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);

});

1 个答案:

答案 0 :(得分:0)

我猜它是由于浏览器websocket支持。 iOS Safari(5.0-5.1)浏览器实现了较旧的websocket协议(Hixie-76)。所以它只支持部分websocket。请参阅websocket支持chart

当你说它有时有效时,很可能会回到长轮询。它可以通过这种方式连接,但它可能有超时问题。请参阅此question中websocket和long-polling之间的差异。默认情况下会重新连接。但超时会发生。

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

资料来源:What browsers support HTML5 WebSocket API?