我读到HTTP不适合作为消息传递协议在几个地方,如这里参考RabbitMQ
我认为这是有技术原因的,而不仅仅是一个观点。例如,我已经看过AMQP规范,并且看不到HTTP + Web Sockets不能工作的任何原因。事实上,有些东西似乎正在为基于Web套接字的AMQP工作。此外,我研究了使用HTTP + Web Sockets的STOMP协议,并没有发现任何明显的限制(除了性能上的小下降)。
HTTP + Web Sockets缺乏什么技术特征,使其不适合作为消息传递协议?
更新:这就是我要找的,横梁。一个WAMP消息代理。我需要一个消息代理,我可以很容易地从浏览器连接到,并没有满意的RabbitMQ (STOMP)或HiveMQ (MQTT)。
HTTP是基于请求/响应的,这使得它很难以发布者/订阅者的方式工作。基本上,您可以轮询消息源以获取新消息,或者创建另一个本地端点,由另一端向您推送消息。
WebSocket则不同。尽管从HTTP请求开始,但它会直接切换到持久的全双工连接,在这种连接中,两端都可以推送数据。基本上,在这种情况下,HTTP仅用作协商连接的协议,一旦协商完毕,WebSocket使用自己的协议来传输数据。
更新:我们很清楚HTTP不是消息传递协议,因为它是请求/响应。虽然WebSockets允许从两端推送数据,但它也不是一个消息传递协议。它定义了一种框架数据的方法,但是没有定义用于订阅主题或任何关于消息传递的操作的语义或语法。例如WAMP是websockets的实际消息传递协议。