'发送''WebSocket':已经处于CONNECTING状态错误

时间:2014-01-30 10:28:35

标签: node.js sockets

我正在使用node.js&在mac上的sockets.io(测试时)。该应用程序正在作为Web应用程序进行测试,也作为IOS上的phonegap编译应用程序进行测试。上面的错误出现在网络应用程序上,当PC一夜之间入睡,我恢复了PC。

在我正在使用的网络客户端上:

OnAppStarted{
connectSocket();
}

function connectSocket(){
socket = io.connect('http://XXX.XXX.XXX.XXX:8124', {
    'reconnect': true,
    'reconnection delay': 500,
    'max reconnection attempts': 50
});

//socket = io.connect('http://81.133.36.139:8124');
socket.on('disconnect', function () { 
//app.jGrowl('disconnected ');
app.setProperty('labelTopText','fontColor','red');
});   

socket.socket.on('connect', function () { 
app.jGrowl('sockets connected');
var d = new Date();
connectedTime = JSON.stringify(d);
socket.emit('subscribe', {schoolNewsUpdated:'schoolNewsUpdated',schoolNewsClientUpdateTime : schoolNewsClientUpdateTime});
app.setProperty('labelTopText','fontColor','white');
});
socket.on('disconnect', function () { 
app.setProperty('labelTopText','fontColor','red');
});   

socket.on('update', function(data) {
//app.jGrowl('on update ');
var d = new Date();
schoolNewsClientUpdateTime = d;
if(data["schoolNewsUpdated"] === 'schoolNewsUpdated'){// && schoolNewsLastUpdateTime > data["schoolUpdatedTime"]  ){
updatedNewsDocs = 'Y';
handler_image_onClick();
}
});

}
}

当应用进入后台时,我有以下事件。

function handler_application_onMobileResume(){
socket.socket.reconnect();
}


function handler_application_onMobilePause(){
socket.socket.disconnect(); 
} 

function handler_application_onMobileResume(){
socket.socket.reconnect();
}


function handler_application_onMobilePause(){
socket.socket.disconnect(); 
}

服务器端:

// live version
var io = require('socket.io').listen(8124);
var roomID;
var schoolNewsServerUpdateTime = '2014-01-10T22:52:50.904Z';
var schoolRequestedTime;
var schoolNewsClientUpdateTime;


io.sockets.on('connection', function (socket) {
socket.on('subscribe', function (data) {
roomID = data["schoolNewsUpdated"];
schoolNewsClientUpdateTime = JSON.stringify(data["schoolNewsClientUpdateTime"]);
socket.join(roomID);
console.log('joined room ' + roomID +' client update ' + schoolNewsClientUpdateTime + ' server update ' + schoolNewsServerUpdateTime);
if(schoolNewsClientUpdateTime < schoolNewsServerUpdateTime){
    console.log(' we should send an update to this client');
    socket.emit('update', {schoolNewsUpdated : 'schoolNewsUpdated'});
}
else
{
console.log(' no update as there is as he already has the latest')
}
});

socket.on('unsubscribe', function (data) {

roomID = data["schoolNewsUpdated"];
socket.leave(roomID);
console.log('left room ' + roomID);

});

socket.on('itemUpdated', function (data) {
var createdFor = data.createdFor;
var updatedChatID = data.updatedChatID;
var d = new Date();
schoolNewsServerUpdateTime = JSON.stringify(d);
console.log('sending '+ updatedChatID +' to everyone in room '+ createdFor + ' created at ' + schoolNewsServerUpdateTime);
socket.broadcast.to(createdFor).emit('update', {schoolNewsUpdated : updatedChatID});

});
});

所以当我更新记录时,我的主'编辑'应用程序会发生这种情况,触发socket.io并向同一房间内的所有客户发送消息。然后,客户端刷新数据并重新填充控件。

我需要做些什么才能阻止出现错误?

MrWarby

0 个答案:

没有答案