在连接 node.js 时从客户端向服务器发送消息

Send a message from client to server on connection node.js

我希望我的客户端代码在建立连接时向服务器发送用户的用户 ID,然后我希望服务器检查数据库中每个正在连接的用户的新消息,并向用户发送有新消息时它有新消息。

我的客户端代码:

 var socket = io.connect('http://localhost:8000');  
 socket.on('connect', function () {
        socket.emit('userid', '1');
});

socket.on('new_message', function (data) {
       var number_of_messages= "<p>"+data.number+"</p>";
        $('#container').html(number_of_messages);
});

我的服务器端代码:

io.sockets.on( 'userid', function (data) {

console.log('userid: '+data);

});

我的问题是上面的代码不起作用:服务器端永远不会收到用户 ID,也永远不会调用 on('userid')。 我的问题是如何知道哪个套接字发送了这个用户 ID 以及如何只向这个特定的套接字发送特定消息。

我通过将客户端套接字及其 ID 保存到全局数组中解决了这个问题。这不是一个好的解决方案,但它有效;我知道有房间和命名空间,但我从未使用过。

socket.io namespaces and rooms

然而,

(我用的是快递)

客户:

 var socket = io.connect('http://localhost:3000',{reconnection:false});
   socket.once('connect', function() {
        socket.emit('join', '#{id}');
   };

服务器:

var clients = [];    

app.io.on('connection', function(socket) {

 socket.on('join', function(data) { 
        clients.push({
            ws: socket,
            id: data
        });
       //retrive the messages from db and loop the clients array
       //and socket.send(things)
    }
}