xhr民意调查错误出来是使用socket.io时抛出

我写了一个关于socket.io的非常简单的演示,并使用phonegap将其打包。 我发现有问题。 打开我的应用程序约十秒后,连接将断开连接,因为xhr轮询error.if我刷新页面断开连接事件错误不会再来。 我使用1.2.0版本。这里是我的代码。 我已经简化了它。

服务器:

var express = require('express'); var app = express(); var http = require('http').Server(app); var io = require('socket.io')(http); var path = require('path'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded()); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); io.sockets.on('connection', function (socket) { console.log("disconnect--"+socket.id+"--"+io.sockets.server.eio.clientsCount); socket.on('disconnect', function () { console.log("disconnect--"+io.sockets.server.eio.clientsCount); }); }); http.listen(80, function () { console.log("server statrt"); }); 

客户:

  $(document).ready(function () { var socket = io("http://192.168.0.106:80"); socket.on('connect', function () { alert("connect"); }); socket.on('error', function (data) { alert(data); }); socket.on('disconnect', function () { alert("disconnect"); }); socket.on("reconnect", function () { alert("reconnect"); }) }); 

谢谢你的帮助。我的英文不太好

当deviceready事件触发时,您必须打开socket.io连接。

 document.addEventListener('deviceready', function() { var socket = io("http://192.168.0.106:80"); socket.on('connect', function() { alert("connect"); }); socket.on('error', function (data) { alert(data); }); socket.on('disconnect', function () { alert("disconnect"); }); socket.on("reconnect", function () { alert("reconnect"); }); }); 

Socket.io示例

对于使用Google Chrome的用户,FYI Chrome不会触发'deviceready' 。 相反,你应该使用'DOMContentLoaded'