我希望我的客户端代码在建立连接时向服务器发送用户的用户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以及如何仅向此特定套接字发送某个消息。
答案 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)
}
}