为什么 HTTP + Websockets 不适合作为消息协议?
Why is HTTP + Web Sockets not suitable as a messaging protocal?
我读到 HTTP 在几个地方不适合作为消息传递协议,例如 here 参考 RabbitMQ。
我认为这有技术原因,而不仅仅是意见。我查看了确实使用 HTTP + Web 套接字的 AMQP spec for example and can't see any reason why HTTP + Web Sockets can't work. In fact, something seems to be in the works for AMQP over Web Sockets. Furthermore, I've looked at the STOMP 协议,看不到任何重大限制(除了小的性能影响)。
HTTP + Web Sockets 缺少哪些技术特性使其不适合作为消息传递协议?
更新:
这就是我要找的东西:Crossbar.IO - WAMP 消息代理。我需要一个可以从浏览器轻松连接的消息代理,并且对 RabbitMQ(通过 STOMP)或 HiveMQ(MQTT)不满意。
HTTP 是基于 request/response 的,因此很难以 publisher/subscriber 的方式工作。基本上,您可以轮询新消息的消息源,或者创建另一个本地端点,另一端向您推送消息。
WebSocket 不同。尽管以 HTTP 请求开始,它会直接切换到持久的全双工连接,两端都可以推送数据。基本上,在这种情况下,HTTP 仅用作协商连接的协议,协商后的 WebSocket 使用自己的协议传输数据。
更新:我们很清楚 HTTP 不是消息传递协议,因为它是 request/response。 WebSockets,虽然它允许从两端推送数据,但它也不是消息传递协议。它定义了一种构建数据的方式,但没有定义语义或语法来订阅主题或任何有关消息传递的操作。例如 WAMP 是 websockets 的实际消息传递协议。
我读到 HTTP 在几个地方不适合作为消息传递协议,例如 here 参考 RabbitMQ。
我认为这有技术原因,而不仅仅是意见。我查看了确实使用 HTTP + Web 套接字的 AMQP spec for example and can't see any reason why HTTP + Web Sockets can't work. In fact, something seems to be in the works for AMQP over Web Sockets. Furthermore, I've looked at the STOMP 协议,看不到任何重大限制(除了小的性能影响)。
HTTP + Web Sockets 缺少哪些技术特性使其不适合作为消息传递协议?
更新: 这就是我要找的东西:Crossbar.IO - WAMP 消息代理。我需要一个可以从浏览器轻松连接的消息代理,并且对 RabbitMQ(通过 STOMP)或 HiveMQ(MQTT)不满意。
HTTP 是基于 request/response 的,因此很难以 publisher/subscriber 的方式工作。基本上,您可以轮询新消息的消息源,或者创建另一个本地端点,另一端向您推送消息。
WebSocket 不同。尽管以 HTTP 请求开始,它会直接切换到持久的全双工连接,两端都可以推送数据。基本上,在这种情况下,HTTP 仅用作协商连接的协议,协商后的 WebSocket 使用自己的协议传输数据。
更新:我们很清楚 HTTP 不是消息传递协议,因为它是 request/response。 WebSockets,虽然它允许从两端推送数据,但它也不是消息传递协议。它定义了一种构建数据的方式,但没有定义语义或语法来订阅主题或任何有关消息传递的操作。例如 WAMP 是 websockets 的实际消息传递协议。