WebSocket和Stomp协议的区别与联系是什么?

目前我的理解是:
WebSocket定义传输协议,Stomp定义传输的文本协议。看了网上的一些博客感觉还是没太弄明白,希望有大佬指点迷津

阅读 9.6k
1 个回答

二者都是 TCP/IP 协议簇下的子协议。

STOMP 对标的是 AMQP。

WebSocket 跟 HTTP 是平级的协议,虽然前者依赖后者建立链接,但之后就跟 HTTP 没啥关系了。依赖关系是因为是因为它是为了浏览器而设计出来的,出于兼容的需要,二者有交集但不是父子关系。

而 STOMP/AMQP 就跟 WebSocket/HTTP 完全没关系了(硬说有也不是没有,毕竟前者的很多设计思路参考了后者,但在具体实现上则没有必然的依赖关系)。

在实际应用中,STMOP 可以建立在 WebSocket 基础上进行数据传输,但也完全可以使用其他应用层协议上。虽然理论上如此,但用 WebSocket 几乎已成为了事实标准,毕竟 STMOP 需要互操作,而全双工的应用层协议并不多,也只能是 WebSocket 了。当然你也完全可以自己在 TCP/IP 上自己搞一套应用层协议,然后把 STMOP 接进去,不过你看看有没有哪个支持 STOMP 的项目(例如 RabbitMQ)会跟进你?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进