首页 > 解决方案 > 带有订阅的 Javascript WebSockets

问题描述

我一直在用 Javascript 探索 WebSockets,并且我已经掌握了一些基础知识,比如发送和接收数据。

然而,当我检查一些连接到 websockets 数据源的真实案例时,总是有这个subscribing通过发送特定 JSON 对象来连接通道的概念。

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

标签: javascriptnode.jswebsocket

解决方案


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

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

通过 websocket 发送内容的两种方法是 Binary 和 Text。因此,当您发送数据包时,您的另一端将收到一条消息。根据您的实现或库,您可能会收到一条完成的消息。

由于发送文本相当便宜且通常的用例是您希望发送结构化格式 - 例如传输语言 JSON。您的接收器(客户端)可以简单地JSON.parse(message)完成工作。

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

最后,websocket 连接是非常基本的——没有这样的框架可以利用。回显或广播服务器是“对于任何传入消息,发送到所有连接的客户端”的示例。发布者/订阅者是另一个一般概念或“渠道”作为 websockety 术语。当用户连接到您的主服务器时,他们会提供一些凭据来进行身份验证和/或将自己标识为唯一实体。

TL:博士;

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

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


https://Pusher.com长期以来一直是 websocket 服务,他们提供了关于这个主题的一些很好的文档

https://pusher.com/docs/channels

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

希望能帮助到你。


推荐阅读