我一直在探索使用Javascript的WebSockets,并且具有基本的工作原理,例如发送和接收数据。
但是,当我检查连接到websockets数据源的某些实际情况时,总是通过发送特定的JSON对象将subscribing
的概念传递给通道。
其背后的机制是什么,服务器端处理此类订阅需要什么?订阅是一种发送和请求数据的理想方式,还是这种方式还有其他用途?
答案 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
,但始终只是格式化的文本或二进制流。您的服务器将处理任何复杂的逻辑。
希望有帮助。