我有一个聊天应用程序,我必须向该对话中的所有其他用户发送消息,当我将消息推送到100以上的所有客户端时,信号器工作正常,但是当我循环遍历这100个连接并单独发送消息时消息在客户端缓慢接收,当我开始更快地推送消息时,我的服务器IIS工作器将达到100%CPU使用率并且客户端上的消息接收变得更慢,
请帮助我找到同时从信号员发送消息到100多个用户的最佳方式
答案 0 :(得分:4)
如果是聊天应用程序,您可能需要查看groups in SignalR。只需为每个“对话”创建一个新组,并将用户加入该组。
来自文档:
public class ContosoChatHub : Hub
{
public Task JoinRoom(string roomName)
{
return Groups.Add(Context.ConnectionId, roomName);
}
public Task LeaveRoom(string roomName)
{
return Groups.Remove(Context.ConnectionId, roomName);
}
}
然后你可以简单地给小组发消息:
Clients.Group(groupName).addChatMessage(name, message);