无法更新已连接用户数(Node.js&;Socket.io)

无法更新已连接用户数(Node.js&;Socket.io),node.js,socket.io,ecmascript-6,Node.js,Socket.io,Ecmascript 6,通过使用vanilla node.js测试socket.io,我制作了一个简单的应用程序来显示在线用户数,为了简单起见,我使用了窗口标题。它在服务器的控制台端工作得很好,但当我打开一个新选项卡时,它不会在客户端的浏览器上更新。这里有什么问题?代码如下: var html = ` <script src="/socket.io/socket.io.js"></script> <script> var socket = io();

通过使用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);
var html=`
var socket=io();
socket.on('count updated',(数据)=>{
//在当前选项卡上工作,未在其他选项卡上更新
document.title=数据+“在线用户”;
});
`;
var计数=0;
var server=require('http')。createServer((req,res)=>{
res.end(html);
});
var io=require('socket.io')(服务器)。on('connection',(socket)=>{
console.log(`${++count}联机用户`);//工作正常
emit('count updated',count);//工作一次
socket.on('disconnect',()=>{
log(`${--count}联机用户`);//工作正常
socket.emit('count updated',count);//不起作用
});
});
听(80);

你不能像那样发射到刚刚断开的插座上。但是,您可以将计数广播给所有连接的用户。为此,请将
socket.emit('count updated',…)
的实例替换为:

io.sockets.emit('count updated', count);
或者更简单:

io.emit('count updated', count);

基于socket.io的示例:


您可以使用
socket.broadcast.emit('count updated',count)

谢谢,问题解决了。那么我遗漏的socket.emit和io.emit之间的区别是什么呢?你能用链接解释一下吗?
socket.emit()
只向该套接字发出事件
io.sockets.emit()
/
io.emit()
向所有连接的sockets.Cool发送事件。谢谢你。