【发布时间】:2016-01-30 14:34:38
【问题描述】:
我正在研究 SignalR,我不想编写聊天客户端。相反,我想创建一个具有持久连接的主机并让 C# .NET 客户端(不是网页)与之通信。有没有编写持久连接客户端的好例子?
或者- Hub 真的是唯一的出路吗?
【问题讨论】:
我正在研究 SignalR,我不想编写聊天客户端。相反,我想创建一个具有持久连接的主机并让 C# .NET 客户端(不是网页)与之通信。有没有编写持久连接客户端的好例子?
或者- Hub 真的是唯一的出路吗?
【问题讨论】:
不,Hub API 不是唯一的方法。网上有很多例子展示了如何使用 PersistentConnections(例如 SignalR repo 中的this one - 这里的客户端是 JavaScript,但是当使用 C# 时,您只需订阅 Received 事件 - 任何时候 SignalR 客户端接收到一条消息,它将调用 Received 事件处理程序)。 Hubs 基本上是一个更高级别的 API,它使 SignalR 的使用更加容易。持久连接是关于发送/接收原始字符串,而集线器是关于从服务器或其他方式调用客户端上的函数。然而,集线器被实现为持久连接之上的一个层,其中消息是 JSON 格式而不是原始字符串,客户端和服务器都会相应地解释它们。
我在 SignalR 协议的 my post 中描述了持久连接和集线器(有关持久连接,请参阅持久连接消息部分)
【讨论】:
.Wait(),这在很多情况下是不正确的,因为它会导致死锁(虽然它应该是很好的控制台应用程序) .