首页 > 解决方案 > SignalR 多房间会话

问题描述

SignalR 多房间会话

我的应用程序如下用户在登录屏幕上看到房间。当他选择其中一个房间并输入他的用户名时,他登录到那个房间。房间形成如下,例如: www.domain.com/room/1 www.domain.com/room/2 然后他与房间里的其他用户发短信。

我的问题如下:

当连接到房间的用户在不同的选项卡中打开房间链接时,会分配一个新的“Context.ConnectionId”值,因此房间是从头开始创建的。我希望连接继续,因为它连接到同一个房间,即使它位于不同的选项卡上。

此外,如果他/她愿意,用户应该能够同时在房间 1 和房间 2。

我怎样才能做到这一点?

标签: signalr

解决方案


您想研究在 SignalR 中使用“组”。根据您的设计,用户可以打开一个新选项卡、登录并加入不同的房间。他们将在各自的房间中通过两者获得消息。

public async Task JoinRoom(string roomName)
{
    await Groups.Add(Context.ConnectionId, roomName);
    Clients.Group(roomName).addChatMessage(Context.User.Identity.Name + " joined.");
}

参考文档 - https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/working-with-groups


推荐阅读