我试图将消息从服务器推送到客户端,而不是反复从客户端提取消息,以便每个客户端只接收该用户的消息。我正在使用Sails JS框架。
我有一个FooController
可以触发客户端正在侦听的事件。在该控制器中,我有以下操作:
var count = 0;
module.exports = {
hello: function (req, res) {
if (!req.isSocket) {
return res.badRequest();
}
sails.sockets.join(req, 'someRoom', function(err) {
console.log('joined');
});
setInterval(function() {
console.log(req.cookies);
sails.sockets.broadcast('someRoom', 'someEvent', { greeting: 'Hello. Counter is ' + (++count) });
}, 500);
res.json({status: 'Everything is okay'});
}
};
客户端,我正在听取事件并向其发出一个请求。由于setInterval
。
io.socket.on('someEvent', function (data){
console.log('hello joined now');
console.log(data);
});
console.log('making get request');
io.socket.get('/foo/hello', function (body, res) {
console.log('server responded');
});
问题是当我从另一个浏览器发出另一个请求时,似乎同步变量。例如,如果我向Chrome发出请求并让计数器计数到100,那么转到Firefox并导航到同一页面,计数器将在Firefox中返回101,102,103等。
我想知道为什么计数器在Firefox的新会话中不会重新开始为0?