当前位置: 代码迷 >> JavaScript >> 在没有端口转发的情况下接收消息
  详细解决方案

在没有端口转发的情况下接收消息

热度:35   发布时间:2023-06-13 11:26:11.0

我希望服务器能够随时向客户端发送消息。 几天可能没有任何消息,但是如果发送了一条消息,我希望几乎立即(最好在1秒或更短的时间内)收到该消息。 在不将客户端设置为服务器并使用端口转发的情况下,我该怎么办?

一个示例是移动设备上的推送通知。 苹果可以几乎立即将推送通知发送到iPhone。 但是,iPhone不能充当服务器。 此外,iPhone可能正在从一个网络转移到另一个网络,并且网络没有将任何端口转发到iPhone。 这是如何运作的? 假设存在某种持久连接,该解决方案如何扩展到同时连接数亿个设备的位置?

这个问题不取决于特定的语言。 我目前正在使用JS。 我主要是在寻找概念上的答案,但是如果有帮助,请随时在任何语言的上下文中回答。

请记住,一旦建立了网络连接,数据就可以沿任一方向在其上流动。 不要求对等方位于连接的“接收”端以接收数据!

在非蜂窝网络*的情况下,iPhone推送通知的工作方式是使设备连接到Apple通知服务器,然后等待从中接收数据。 不需要端口转发,因为这是设备的出站连接。 如果连接丢失,设备将重新连接到服务器并“签入”以查看是否丢失了任何东西。


*:如果设备仅具有蜂窝连接,因此无法始终保持网络连接打开,则它可能依赖于通过蜂窝网络本身发出的通知,就像SMS一样。 但这完全是另一回事。

  相关解决方案