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);
}
我正在努力完成这个面试任务。任务看起来像这样:
创建 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);
}