通过WebSocket进行STOMP

STOMP是面向简单文本的消息协议。 它定义了一种可互操作的有线格式 ,该格式允许STOMP客户端与任何STOMP消息代理进行通信。 这提供了不同语言,平台和代理之间轻松,广泛的消息互操作性。

规范定义了使其与其他消息传递协议不同的地方:

它是其他开放消息协议(例如AMQP)和JMS代理(例如OpenWire)中使用的实现特定有线协议的替代。 它通过覆盖一小部分常用消息传递操作而不提供全面的消息传递API来与众不同。

STOMP是基于帧的协议。 框架由命令,一组可选的标头和可选的主体组成。 常用的命令有:

  • 连接
  • 发送
  • 订阅
  • UNSCUBSCRIBE
  • 确认
  • 纳克
  • 断开

WebSocket消息也作为帧传输。 WebSocket上的STOMP将STOMP帧映射到WebSocket帧。

HornetQ,ActiveMQ,RabbitMQ等其他消息传递服务器通过WebSocket为STOMP提供本机支持。 让我们看一个有关如何使用ActiveMQ在WebSocket上使用STOMP的简单示例。

该示例的源代码可在github.com/arun-gupta/wildfly-samples/tree/master/websocket-stomp中找到

让我们开始吧!

  1. github.com/arun-gupta/activemq-openshift-cartridge所述,下载ActiveMQ 5.10或在OpenShift中配置ActiveMQ实例。
    workspaces> rhc app-create activemq diy --from-code=git://github.com/arun-gupta/activemq-openshift-cartridge.git
    Using diy-0.1 (Do-It-Yourself 0.1) for 'diy'
    
    Application Options
    -------------------
    Domain:      milestogo
    Cartridges:  diy-0.1
    Source Code: git://github.com/arun-gupta/activemq-openshift-cartridge.git
    Gear Size:   default
    Scaling:     no
    
    Creating application 'activemq' ... done
    
      Disclaimer: This is an experimental cartridge that provides a way to try unsupported languages, frameworks, and middleware on OpenShift.
    
    Waiting for your DNS name to be available ... done
    
    Cloning into 'activemq'...
    Warning: Permanently added the RSA host key for IP address '54.90.10.115' to the list of known hosts.
    
    Your application 'activemq' is now available.
    
      URL:        http://activemq-milestogo.rhcloud.com/
      SSH to:     545b096a500446e6710004ae@activemq-milestogo.rhcloud.com
      Git remote: ssh://545b096a500446e6710004ae@activemq-milestogo.rhcloud.com/~/git/activemq.git/
      Cloned to:  /Users/arungupta/workspaces/activemq
    
    Run 'rhc show-app activemq' for more details about your app.
    workspaces> rhc port-forward activemq
    Checking available ports ... done
    Forwarding ports ...
    
    To connect to a service running on OpenShift, use the Local address
    
    Service Local                OpenShift
    ------- --------------- ---- -----------------
    java    127.0.0.1:1883   =>  127.7.204.1:1883
    java    127.0.0.1:5672   =>  127.7.204.1:5672
    java    127.0.0.1:61613  =>  127.7.204.1:61613
    java    127.0.0.1:61614  =>  127.7.204.1:61614
    java    127.0.0.1:61616  =>  127.7.204.1:61616
    java    127.0.0.1:8161   =>  127.7.204.1:8161
    
    Press CTRL-C to terminate port forwarding
  2. 下载WildFly 8.1 zip ,解压缩并以bin/standalone.sh开头
  3. 克隆仓库并在WildFly上部署示例:
    git clone https://github.com/arun-gupta/wildfly-samples.git
    cd wildfly-samples
    mvn wildfly:deploy
  4. 通过localhost:8080 / websocket-stomp-1.0-SNAPSHOT /访问该应用程序,以查看该页面:
    techtip53-默认页面
  5. 为主题和队列指定文本有效负载“ foobar,并使用ActiveMQ约定”,以将队列名称指定为“ / queue / myQ1”。 依次单击“连接”,“发送消息”,“订阅”和“断开连接”按钮。 这将在建立WebSocket连接的浏览器窗口中显示消息,将STOMP消息发送到队列,订阅队列以接收消息,然后最终断开连接。可以使用Chrome Developer Tools看到STOMP框架,如下所示:
    techtip53-websocket-frames 如您所见,每个STOMP框架都映射到一个WebSocket框架。

简而言之,OpenShift上的ActiveMQ正在端口61614上运行STOMP代理,并且可以通过端口转发在localhost:61614上进行访问。 单击“连接”按钮将使用与应用程序捆绑在一起的Stomp库来建立与ws:// localhost:61614 /的WebSocket连接。 后续按钮通过WebSocket发送STOMP帧,如开发人员工具的“框架”选项卡所示。

jmesnil.net/stomp-websocket/doc/上了解有关所有部分如何协同工作的更多详细信息。 杰夫还写了一本很棒的书,解释了WebSocket上的STOMP以及他的移动和网络消息书中可以通过WebSocket完成的其他有趣的事情。

翻译自: https://www.javacodegeeks.com/2014/11/stomp-over-websocket.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值