带订阅的Javascript WebSocket

时间:2019-07-27 12:42:45

标签: javascript node.js websocket

我一直在探索使用Javascript的WebSockets,并且具有基本的工作原理,例如发送和接收数据。

但是,当我检查连接到websockets数据源的某些实际情况时,总是通过发送特定的JSON对象将subscribing的概念传递给通道。

其背后的机制是什么,服务器端处理此类订阅需要什么?订阅是一种发送和请求数据的理想方式,还是这种方式还有其他用途?

1 个答案:

答案 0 :(得分:0)

我觉得这是一个大问题,我可能无法提供完整的答案。但我会尝试-

首先,websocket只是没有套接字 close 的标准Web请求。因此,您维护的双向套接字上的输入/输出允许推送数据

通过网络套接字发送内容的两种方法是二进制和文本。因此,当您发送数据包时,另一端将收到一条消息。根据您的实现或库,您可能会收到一条完成消息。

由于发送文本非常便宜,而且通常情况下,您需要发送结构化格式,例如传输语言JSON。您的接收者(客户)只需JSON.parse(message)即可完成工作。

您当然可以发送任何格式的文本-例如[my content:"my custom format"],但这是您自己的实现。

最后,websocket连接非常基础-没有框架这样的杠杆。 echo 或广播服务器是“对于任何传入消息,将其发送到所有连接的客户端” 的示例。发布者/订阅者是Websockety术语中的另一个一般概念或“渠道”。当用户连接到您的主服务器时,他们会提供一些凭据来认证和/或将自己标识为唯一实体。

TL:DR;

因此,“订阅”更多是一个概念,允许用户连接并分配给消息流。对于许多现成的库,这是免费提供的。这可以通过格式化的传输文本(例如JSON)来完成。

在服务器上,您可以处理套接字并构建自己的例行协议。这可以像使用IDS的套接字列表一样简单。


https://Pusher.com长期以来一直是Websocket服务,它们提供了有关此主题的出色文档

https://pusher.com/docs/channels

,但始终只是格式化的文本或二进制流。您的服务器将处理任何复杂的逻辑。

希望有帮助。