我正在创建一个基于服务器/客户端架构的聊天应用程序。服务器和客户端之间的通信是基于TCP的套接字。在这个应用程序中我创建了不同的公共房间。任意数量的用户都可以加入任何公共场所。
现在当公共场所的用户说“XYZ”发送房间信息时,我需要将该信息发送给“XYZ”公共场所的所有人。
问题从这里开始。假设公共房间“XYZ”中有1000个用户,每当用户在这个房间发送消息时,我需要发送此消息,以便在9循环中相应的套接字描述符中逐一休息。
这是我知道这样做的唯一方法,我认为这不是一个好方法,因为如果用户增加,它会严重影响系统的性能。
请告诉我有效的方法来帮助我。
感谢。
答案 0 :(得分:2)
这是你可以通过流套接字(即TCP,我建议用于(可靠)聊天)的唯一方法。
多播和其他只适用于UDP等。
这也是(其中包括冗余等)大型IRC网络拥有多台服务器的原因。然后,接收用户消息的服务器仅需要分发给他自己的所有用户和网络的所有服务器,然后再分发给他们的用户。这减少了单个服务器负载。
答案 1 :(得分:0)
使用pub sub。客户订阅聊天室,您只需将消息发布到单个实体 - 聊天室。