var io = require('socket.io').listen(app);
io.configure(function () {
io.set("transports", ["xhr-polling"]);
io.set("polling duration", 100);
});
io.sockets.on('connection', function (socket) {
socket.broadcast.emit('system', '[' + name + ']上线了...');
socket.on('public message', function (data) {
socket.broadcast.emit('public message', data);
});
socket.on('disconnect', function () {
socket.broadcast.emit('system', '[' + name + ']下线了....');
});
});
客户端:
socket.on('connect', function () {
socket.on('public message', function (data) {
$("#show").append(data);
});
//显示系统广播
socket.on('system', function (data) {
$("#show").append('<span style=color:red>系统信息:' + data + '</span><br/>');
});
});
运行后,打开2个浏览器,先开始正常,打开一个,然后再打开另一个,会正常提示XXX上线了,发信息也没有问题。 但是2个浏览器不做任何操作后(没有关闭浏览器),一段时间,会提示XXX下线了。再过一段时间又自动XXX上线了,而且以后的数据都是重复的,比如发送消息:“你好”,然后另一个浏览器里会显示两边**"你好"**,用这个浏览器回复消息没有问题,会正常显示1条消息。
网上搜了很久,都没找到答案。 是不是
io.set("transports", ["xhr-polling"]);
io.set("polling duration", 100);
设置有问题