在 .Net Core 中序列化 WebSocket 对象

Serializing WebSocket objects in .Net Core

基于 System.Net.WebSocket 创建服务器非常简单,客户端套接字连接,然后我可以将它们保存在并发字典中,类似于 ConcurrentDictionary(),一切正常。

但这对实际应用来说并不好,因为在同一个地址后面会有同一个 WebSocket 服务器 运行 的多个实例,返回的响应实际上应该到达特定的 WebSocket 服务器,这击败了它的目的并代表了单点故障。所以我需要将 WebSocket 对象保存在数据库或 Azure 存储 table 或类似的东西中,所有服务器实例都可以访问客户端套接字,以便它们可以使用它们将消息发送回客户.

我尝试了很多方法,但找不到序列化 WebSocket 的方法。 JSON 序列化不起作用,二进制也不起作用,因为在该抽象 class 中没有任何东西是可序列化的,而且二进制现在被认为已过时,不应使用。那么关于如何解决这个问题有什么想法吗?

我不想在任何情况下使用 SignalR。

谢谢。

我相信您可能误解了负载平衡如何与 WebSockets 一起工作。 WebSocket 连接非常类似于常规 'socket'(因此得名 WebSocket)。

通过 WebSocket 发送的消息只会发送到套接字所连接的服务器。单个 WebSocket 连接只会直接与一台服务器通信。