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

时间:2016-05-31 07:43:41

标签: node.js sockets websocket socket.io serversocket

我希望我的客户端代码在建立连接时向服务器发送用户的用户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(&#39; userid&#39;)。 我的问题是如何知道哪个套接字发送了此用户ID以及如何仅向此特定套接字发送某个消息。

1 个答案:

答案 0 :(得分:1)

我通过将客户端套接字及其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)
    }
}