据我了解,Facebook Messenger443
同时用于 HTTP 和 MQTT(或他们现在可能使用的任何协议)流量。这似乎是一个很好的策略,因为在某些非常受限的网络中才80
允许 443
使用。如果我想将其用于443
来自我们应用程序的所有流量(HTTP 和 MQTT/MQTT over WebSockets),我该如何实现?
答案1
我猜这只有当绑定到端口的应用程序进行协议切换时才有可能。通常没有办法将两个应用程序/服务绑定到一个端口。
答案2
考虑到WebSockets协议客户端通过发出特殊的 HTTP 请求来启动握手和默认使用常规 HTTP 端口(80/tcp
分别443/tcp
用于普通连接和 TLS 连接),实际上完全可以预期这两种协议都会连接到相同的端口。
我想可能会出现的问题是如果你想有两个独立的应用程序,一个 HTTP 应用程序和一个 WebSockets 应用程序,在同一个主机上使用相同的端口和相同的地址运行(如果你可以将它们绑定到相同的端口但不同的地址,那真的没什么)。
对于这种情况,我认为在两个应用程序前面使用支持 WebSockets 的反向 HTTP 代理是最有意义的。
例如,看看如何使用Nginx 代理 WebSockets除了常规的 HTTP 代理。