消息传递应用程序 "Bypass" 防火墙如何?

How do Messaging Applications "Bypass" Firewalls?

那里。我目前正在制作一个类似 python 的网络聊天程序。目前,它只能在本地网络上运行,无法向网络外部连接的客户端发送消息,因为它们的路由器防火墙阻止了发送给它们的消息。

所以,我的问题是:消息传递应用程序 "bypass" 防火墙如何向客户端发送消息?他们是否使用来自服务器的 "fetching" 之类的信息并将消息通过隧道返回给他们?但如果每秒都获取数据,即使这样也会消耗大量电池。而且每分钟都获取是不切实际的。我在想他们更多地使用 "push" 协议,就像我的 IMAP 服务器 "pushes" 我的电子邮件到我的手机一样。但是这些连接是如何通过防火墙的呢?

我认为您正在寻找的是某种推送通知架构。我会向您指出这两个资源:

本质上,客户端设备与它无限期保持打开状态的通知服务器建立全双工连接。应用程序服务器向通知服务器注册,当它们不通知客户端设备时,它们将消息发送到通知服务器,通知服务器使用与客户端设备的开放连接来通知它们。出于效率原因,通常不同的应用程序使用相同的通知服务器。

回顾一下,客户端设备与通知服务器建立双工连接,应用服务器将客户端的通知发送到通知服务器,通知服务器将通知发送到相应的客户端。