core3.1 控制器中的 SignalR 上下文 - 无 context.clients
SignalR context within core3.1 controller - no context.clients
我正在尝试从控制器调用 SignalR 集线器操作。
在我的控制器上我有这个:
private readonly IHubContext<TurnHub> _hubContext;
public HomeController(ILogger<HomeController> logger, IHubContext<TurnHub> hubContext)
{
_logger = logger;
_hubContext = hubContext;
_gameService = new GameService(ModelState);
}
public async Task<IActionResult> Test()
{
return View();
}
public async Task<IActionResult> TestMessage()
{
await _hubContext.Clients.All.SendAsync("TurnChanged", 1);
return View();
}
当我中断中心上下文时,我可以看到“客户端”和“组”的节点,但该级别下没有客户端或组。 运行 控制器操作未发现任何错误,但消息未推送到客户端。
在集线器上我有这个:
public class TurnHub : Hub
{
public async Task EndTurn(int nextUser)
{
await Clients.All.SendAsync("TurnChanged", nextUser);
}
}
视图是这样的:
<script>
var connection = new signalR.HubConnectionBuilder().withUrl("/TurnHub").build();
connection.on("TurnChanged", function (nextUser) {
debugger;
alert(nextUser);
});
</script>
我期待任何显示该视图的浏览器 window 在其中一个客户端点击该控制器操作(从该视图上的按钮调用)时发出警报。
我做错了什么?
我安装了 signalr 核心包,js 文件来自“添加客户端库”@microsoft/signalr。浏览器上没有控制台报错说有什么不对!
非常感谢任何帮助。
在您的 javascript 客户端中,您需要启动集线器连接。像这样
connection.start();
一开始会 return 一个承诺,这样您就可以在连接集线器后做一些事情。也可以通过捕获该承诺的错误来跟踪连接失败。
我正在尝试从控制器调用 SignalR 集线器操作。
在我的控制器上我有这个:
private readonly IHubContext<TurnHub> _hubContext;
public HomeController(ILogger<HomeController> logger, IHubContext<TurnHub> hubContext)
{
_logger = logger;
_hubContext = hubContext;
_gameService = new GameService(ModelState);
}
public async Task<IActionResult> Test()
{
return View();
}
public async Task<IActionResult> TestMessage()
{
await _hubContext.Clients.All.SendAsync("TurnChanged", 1);
return View();
}
当我中断中心上下文时,我可以看到“客户端”和“组”的节点,但该级别下没有客户端或组。 运行 控制器操作未发现任何错误,但消息未推送到客户端。
在集线器上我有这个:
public class TurnHub : Hub
{
public async Task EndTurn(int nextUser)
{
await Clients.All.SendAsync("TurnChanged", nextUser);
}
}
视图是这样的:
<script>
var connection = new signalR.HubConnectionBuilder().withUrl("/TurnHub").build();
connection.on("TurnChanged", function (nextUser) {
debugger;
alert(nextUser);
});
</script>
我期待任何显示该视图的浏览器 window 在其中一个客户端点击该控制器操作(从该视图上的按钮调用)时发出警报。
我做错了什么?
我安装了 signalr 核心包,js 文件来自“添加客户端库”@microsoft/signalr。浏览器上没有控制台报错说有什么不对!
非常感谢任何帮助。
在您的 javascript 客户端中,您需要启动集线器连接。像这样
connection.start();
一开始会 return 一个承诺,这样您就可以在连接集线器后做一些事情。也可以通过捕获该承诺的错误来跟踪连接失败。