通过SignalR将消息推送到多个客户端

时间:2015-01-05 19:00:11

标签: signalr

我有一个聊天应用程序,我必须向该对话中的所有其他用户发送消息,当我将消息推送到100以上的所有客户端时,信号器工作正常,但是当我循环遍历这100个连接并单独发送消息时消息在客户端缓慢接收,当我开始更快地推送消息时,我的服务器IIS工作器将达到100%CPU使用率并且客户端上的消息接收变得更慢,

请帮助我找到同时从信号员发送消息到100多个用户的最佳方式

1 个答案:

答案 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);