我正在尝试创建一个基本的聊天应用程序。我正在使用socket.io,我很难弄清楚应该如何处理用户与用户之间的通信。
我在这里读到了一些答案:如何用socket.io向特定客户机发送消息
但我还是很困惑,假设我有3个用户,A,B和C.我想让A和B说话,我想让C和B说话。当然,A应该不会看到B和C互相发送的消息,反之亦然。
socket rooms的想法似乎很棒,但在我看来,任何人都可以加入“房间”并看到彼此的信息。
我很困惑,不知道该怎么处理。我读到另一个答案,这是每个用户将有一个套接字,所以我可以使用套接字发送消息。就像这样:
用户ID->;套接字编号1
B用户ID->套接字编号2
C用户ID->插座编号3
所以当A向be发送消息时,它会将它从A的套接字发送到B的套接字。
但我不确定我说对了。
一个“房间”只是一个容器,而不是(必须)被认为是一个聊天室。如果你只想让A-B和C-B彼此交流,那么就把它们放在两个单独的房间里。记住,API不允许客户端加入任意房间。服务器决定将客户端套接字放入哪些房间。
根据您的用例,当a
向服务器发出信号,它们希望与b
通信时,在服务器端设置一个房间,并将a
和b
服务器端套接字放入该房间。然后,当a
发送聊天消息时,您可以查找a
所属的各个房间,并决定向哪个房间广播(io.in(。。。)。emit(。。。)
)该消息。
相反,如果您真的想要点对点通信,那么Socket.io可能并不是完成这项工作的最佳工具?这仍然是绝对可行的,但是您引入了一个额外的跃点。
在这种情况下,您可以让您的服务器从a
(它还包含收件人的标识符)接收消息,确定收件人是谁,然后将消息直接发送到该套接字(每个套接字都属于一个名称与socket.id
相同的“房间”)