c# - 客户端未使用 SignalR 接收集线器推送
问题描述
我有以下集线器:
public class MyHub : Hub
{
public static HubLifetimeManager<MyHub> HubManager { get; private set; }
public MyHub(HubLifetimeManager<MyHub> hubManager)
{
HubManager = hubManager;
}
public string SayHello()
{
return "hello! " + DateTime.UtcNow;
}
}
我定期推送事件,如下所示:
private static void TickTimer(object State)
{
var Time = DateTime.UtcNow.ToString(CultureInfo.InvariantCulture);
var A = MyHub.HubManager;
if (A != null)
{
A.SendAllAsync("Update", new object[] { Time });
}
}
在客户端,我使用以下代码:
var Connection = new HubConnectionBuilder()
.WithUrl("http://localhost:8000/myhub")
.Build();
Connection.On("Update", () => Console.WriteLine("Update")); DOESN'T WORK
Connection.On("Update", (object[] O) => Console.WriteLine("AA")); DOESN'T WORK EITHER
var StartAsync = Connection.StartAsync();
StartAsync.Wait();
我错过了什么?
更新:
我添加了日志记录并发现了这一点:
无法绑定在“更新”的调用“(空)”中收到的参数。System.IO.InvalidDataException:调用提供 1 个参数,但目标需要 0。在 Microsoft.AspNetCore.SignalR.Protocol.JsonHubProtocol.BindArguments(JsonTextReader 阅读器,IReadOnlyList`1 paramTypes)
问题只是参数列表不一样。但除非打开日志记录,否则 SignalR 只会吞下错误,什么都看不到。
解决方案
尝试这个:
Connection.On<object[]>("Update", (data) =>
{
Console.WriteLine("AA");
//TO DO
});
推荐阅读
- python - 是否可以在 Python 中将 RabbitMQ 直接回复功能与 Pika 生成器消费者一起使用?
- javascript - 如何从用户nodejs获取输入
- c - http2 请求返回错误请求
- r - ggplot 标准化每个 facet_wrap
- c# - 如何使自定义控件预览设计器友好
- java - Python 作为 graalvm 中的“宿主”语言
- .net - 如何组合命中不同关联映射的多个 LINQ 查询
- python - 我无法加载刚刚保存的 numpy .npy 文件
- c# - Accessdatabase 引擎 2016 在 Windows 10 操作系统上经常损坏,并且 ODBC 连接无法打开 excel 2016 驱动程序问题
- python - 如何格式化文本,使它们看起来就像网站上显示的一样?