WebSocket和STOMP协议之间有什么区别?

WebSocket和STOMP协议之间有什么区别?,websocket,stomp,Websocket,Stomp,WebSocket和STOMP协议之间的主要区别是什么?这个问题类似于询问TCP和HTTP之间的区别。我仍将试图回答你的问题,如果你开始的话,很自然会混淆这两个术语 简短回答 STOMP是在WebSocket之上派生的。STOMP只是提到了一些关于如何使用WebSocket在客户端和服务器之间交换消息帧的具体方法 长答案 网袋 它是一种允许客户端和服务器之间进行异步双向通信的规范。虽然与TCP套接字类似,但它是一种作为升级的HTTP连接运行的协议,在双方之间交换可变长度的帧,而不是流 跺脚 它

WebSocket和STOMP协议之间的主要区别是什么?

这个问题类似于询问TCP和HTTP之间的区别。我仍将试图回答你的问题,如果你开始的话,很自然会混淆这两个术语

简短回答

STOMP是在WebSocket之上派生的。STOMP只是提到了一些关于如何使用WebSocket在客户端和服务器之间交换消息帧的具体方法


长答案

网袋

它是一种允许客户端和服务器之间进行异步双向通信的规范。虽然与TCP套接字类似,但它是一种作为升级的HTTP连接运行的协议,在双方之间交换可变长度的帧,而不是流

跺脚

它为客户端和服务器定义了一个协议,以使用消息传递语义进行通信。它没有定义任何实现细节,而是为消息传递集成提供了一个易于实现的有线协议。它在WebSockets协议的基础上提供了更高的语义,并定义了一些映射到WebSockets框架的框架类型。其中一些类型是

  • 连接
  • 订阅
  • 退订
  • 发送(发送到服务器的消息)
  • 消息(用于从服务器发送的消息)开始、提交、回滚 (交易管理)

    • WebSocket API使web应用程序能够处理双向通信,而STOMP是一种简单的面向文本的消息传递协议

      当web应用程序需要支持与web服务器的双向通信时,STOMP协议通常在web套接字中使用

      Jeff Mesnill(2012)提供了一个很好的教程

      STOMP也可以在没有websocket的情况下使用,例如通过Telnet连接或消息代理服务


      原始WebSocket可以在不使用STOMP的情况下使用-例如,

      WebSocket确实意味着一种消息传递体系结构,但并不强制使用任何特定的消息传递协议。它是TCP上的一个非常薄的层,将字节流转换为消息流(文本或二进制),仅此而已。由应用程序来解释消息的含义

      与HTTP不同,HTTP是一种应用程序级协议,在WebSocket协议中,传入消息中没有足够的信息让框架或容器知道如何路由或处理它。因此,WebSocket的级别可以说是太低了,除了一个非常琐碎的应用程序之外。这是可以做到的,但它可能会导致在顶部创建一个框架。这与当今大多数web应用程序使用web框架而不是ServletAPI编写的方式相当

      因此,WebSocket RFC定义了子协议的使用。在握手过程中,客户端和服务器可以使用header Sec WebSocket协议来商定子协议,即使用更高的应用程序级协议。不需要使用子协议,但即使不使用,应用程序仍需要选择客户端和服务器都能理解的消息格式。该格式可以是自定义的、特定于框架的或标准的消息传递协议


      跺脚 — 一种简单的消息传递协议,最初创建用于脚本语言,其框架受HTTP启发。STOMP得到广泛支持,非常适合在WebSocket和web上使用。

      注意:其他人已经很好地解释了什么是WebSocketSTOMP,因此我将尝试添加缺少的部分

      WebSocket协议定义了两种类型的消息(文本和二进制),但其内容未定义

      STOMP协议定义了一种机制,用于客户端和服务器协商子协议(即更高级别的消息传递协议),以在WebSocket之上使用该协议定义以下内容:

      • 每个人都可以发送什么样的信息
      • 格式是什么,
      • 每条消息的内容,等等
      子协议的使用是可选的,但无论如何,客户端和服务器都需要在定义消息内容的协议上达成一致


      你是说异步吗?