【发布时间】:2016-12-20 00:22:57
【问题描述】:
我有一个问题,但研究了很多天,但仍然没有解决它。
我将聊天用户投射到用户 socket.io 和 nodejs。
我是用户 A,当我在应用程序的用户列表中单击用户 B 时,它将让用户 A 和 B 加入同一个房间(set roomname is (IdOfUserA)_(IdOfUserB))。
我如何在服务器端做同样的事情,请帮助我或向我展示有类似问题的帖子。
非常感谢。
【问题讨论】:
我有一个问题,但研究了很多天,但仍然没有解决它。
我将聊天用户投射到用户 socket.io 和 nodejs。
我是用户 A,当我在应用程序的用户列表中单击用户 B 时,它将让用户 A 和 B 加入同一个房间(set roomname is (IdOfUserA)_(IdOfUserB))。
我如何在服务器端做同样的事情,请帮助我或向我展示有类似问题的帖子。
非常感谢。
【问题讨论】:
在伪代码中我会做这样的事情:
在客户端
socket.emit('chat-with-user-b', {userb : IdOfUserB});
socket.on('chat-with-me', function(roomID){
// open tchat etc..
});
在服务器端:
io.on("connection", function(socket){
socket.on('chat-with-user-b', function(IdOfUserB){
var roomID = IdOfUserB + '_' + socket.id; // create a unique room id
socket.join(roomID); // make user A join room
io.sockets[IdOfUserB].join(roomID); // make user B join room
io.sockets.in(roomID).emit('chat-with-me', roomID); // send join event to both.
});
});
【讨论】:
io.on("connection", function(socket){ socket.emit('list-of-clients', io.sockets.connected); .. } 在客户端上:socket.on('list-of-client', function (list){ list.each(....) // 做一些类似显示的事情 }`