java服务器开发教程 再谈websocket论架构设计(2)

电脑杂谈  发布时间:2018-02-21 00:52:48  来源:网络整理

底层对于开发者来说是透明的。

STOMP

STOMP 中文为: 面向消息的简单文本协议

websocket定义了两种传输信息类型: 文本信息 和 二进制信息 ( text and binary ).

类型虽然被确定,但是他们的传输体是没有规定的。

当然你可以自己来写传输体,来规定传输内容。(当然,这样的复杂度是很高的)

所以,需要用一种简单的文本传输类型来规定传输内容,它可以作为通讯中的文本传输协议,即交互中的高级协议来定义交互信息。

STOMP本身可以支持流类型的网络传输协议: websocket协议和tcp协议

它的格式为:

COMMAND
header1:value1
header2:value2

Body^@




SUBSCRIBE
id:sub-1
destination:/topic/price.stock.*

^@



SEND
destination:/queue/trade
content-type:application/json
content-length:44

{"action":"BUY","ticker":"MMM","shares",44}^@

当然STOMP已经应用于很多消息代理中,作为一个传输协议的规定,如:RabbitMQ, ActiveMQ

我们皆可以用STOMP和这类MQ进行消息交互.

除了STOMP相关的代理外,实际上还提供了一个stomp.js,用于浏览器客户端使用STOMP消息协议传输的js库。

让我们很方便的使用stomp.js进行与STOMP协议相关的代理进行交互.

正如我们所知,如果websocket内容传输信息使用STOMP来进行交互,websocket也很好的于消息代理器进行交互(如:RabbitMQ, ActiveMQ)

这样就很好的提供了消息代理的集成方案。

总结,使用STOMP的优点如下:

不需要自建一套自定义的消息格式

现有stomp.js客户端(浏览器中使用)可以直接使用

能路由信息到指定消息地点

可以直接使用成熟的STOMP代理进行广播 如:RabbitMQ, ActiveMQ

技术落地 后端技术方案选型

websocket服务端选型:spring websocket

支持SockJS,开启SockJS后,可应对不同浏览器的通讯支持

支持STOMP传输协议,可无缝对接STOMP协议下的消息代理器(如:RabbitMQ, ActiveMQ)

前端技术方案选型

前端选型: stomp.js,sockjs.js

后端开启SOMP和SockJS支持后,前对应有对应的js库进行支持.

所以选用此两个库.

总结

上述所用技术,是这样的逻辑:

开启socktJS:

如果有浏览器不支持websocket协议,可以在其他两种协议中进行选择,但是对于应用层来讲,使用起来是一样的。

这是为了支持浏览器不支持websocket协议的一种备选方案

使用STOMP:

java服务器开发教程_java服务器开发_java服务器教程推荐

使用STOMP进行交互,前端可以使用stomp.js类库进行交互,消息一STOMP协议格式进行传输,这样就规定了消息传输格式。

消息进入后端以后,可以将消息与实现STOMP格式的代理器进行整合。

这是为了消息统一管理,进行机器扩容时,可进行负载均衡部署

使用spring websocket:

使用spring websocket,是因为他提供了STOMP的传输自协议的同时,还提供了StockJS的支持。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-86444-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 扶彬
      扶彬

      怎么就不能科学一点地去想想失足妇女合法化呢

    • 刘双
      刘双

      别以为这是US的强大

    • 赵静娴
      赵静娴

      烊烊棒棒哒永远伴你左右

    热点图片
    拼命载入中...