我正在使用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