Return 来自 signalR 的 websocket ASP .NET 3.0

Return websocket from signalR in ASP .NET 3.0

我正在努力完成这个面试任务。任务看起来像这样:

创建 REST API.Following 端点需要实现:

POST /登录 • 在 POST 中,有效载荷将是用户名和密码,它 return 是假的或真,带有一些令牌

获取/排行榜/ • Returns 某些游戏类型的虚拟数据GET

/匹配 • Returns 活动匹配虚拟列表POST

/match/join • 玩家将加入比赛,它return与某些会话令牌WS的WebSocket 连接/match/room • 此端点仅适用于 WebSocket

• 将出现三个消息:Fire (void)、Move (Vector3 Location)、GetPlayers (uint16 Limit)All routes should return only dummy data, no database are necessary (but its bonus if you将有时间实施一些数据库)。请使用 .NET Core、C# 和 . ASP.NET核心。 对于 WebSocket,请使用 SignalR

我无法了解如何使用 signalR 创建 websocket 以及如何获取其数据会话令牌。 谁能给我解释一下?

我所能想出的就是创建一个这样的中心:

 public class MatchHub: Hub
    {
        public async void Fire()
        {
           await Clients.All.SendAsync("Fire msg");
        }
        public async void Move (Vector3 Location)
        {
           await Clients.All.SendAsync("Move msg");
        }
        public async void GetPlayers (UInt16 Limit)
        {
           await Clients.All.SendAsync("GetPlayers msg");
        }
    }

但我认为那不是他们想要的。据我了解,此集线器始终可用,并且不需要 Join 方法。

@mm8:答案是你不能使用 signalR 从控制器打开 websocket(它在启动集线器配置上自行打开)。而且不能在任务中随心所欲地使用它。我认为我对 hub 所做的一切都是正确的方法。对于 return 会话数据,我使用了 SignalR.Client 金块,如下所示:

[HttpGet("match/join", Name = "JoinMatch")]
        public async Task<IActionResult> JoinMatch()
        {  
            var connection = new HubConnectionBuilder()
                .WithUrl("http://localhost:5000/match/room")
                .Build();

            await connection.StartAsync();
            await connection.SendAsync("Fire");

            return Ok(connection);
        }