使用 vanilla node.js 测试 socket.io,我正在制作一个简单的应用程序来显示在线用户数,为简单起见,使用窗口标题。它在服务器的控制台端工作正常,但当我打开新选项卡时,它没有在客户端浏览器上更新。这里有什么问题?代码如下:
var html = `
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
socket.on('count updated', (data) => {
//Worked on the current tab, didn't updating on the other tabs
document.title = data + ' User(s) Online';
});
</script>
`;
var count = 0;
var server = require('http').createServer((req, res) => {
res.end(html);
});
var io = require('socket.io')(server).on('connection', (socket) => {
console.log(`${++count} User(s) Online`); //worked fine
socket.emit('count updated', count); //worked once
socket.on('disconnect', () => {
console.log(`${--count} User(s) Online`); //worked fine
socket.emit('count updated', count); //didn't worked
});
});
server.listen(80);
最佳答案
你不能像那样向刚刚断开连接的套接字发出信号。不过,您可以将计数广播给所有已连接用户。为此,请将 socket.emit('count Updated', ..)
的实例替换为:
io.sockets.emit('count updated', count);
或者更简单:
io.emit('count updated', count);
关于node.js - 无法更新连接用户数(Node.js 和 Socket.io),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36390852/