起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21740|回复: 13

X5集成ActiveMQ+WebSocket实现消息推送

  [复制链接]

37

主题

713

帖子

3310

积分

内部用户

积分
3310
发表于 2014-1-14 14:29:55 | 显示全部楼层 |阅读模式
本帖最后由 jholy 于 2014-1-14 14:59 编辑

activeMQ.jpg
1、首先下载并安装ActiveMQ

    http://www.apache.org/dyn/closer.cgi?path=/activemq/apache-activemq/5.9.0/apache-activemq-5.9.0-bin.zip

    1)解压后,将webapps-demo目录下的demo复制到webapps目录下
    2)执行bin/activemq.bat,启动ActiveMQ服务
    3)打开http://localhost:8161/demo,运行自带的Web sockets example进行测试

2、在X5中创建应用demo/activeMQ

    1)编写用于发送ActiveMQ消息的动作

        下载http://central.maven.org/maven2/org/apache/activemq/activemq-all/5.9.0/activemq-all-5.9.0.jar
        放入/BIZ/demo/activeMQ/logic/code/lib文件夹中

        编写动作代码(动作模型文件参见/BIZ/demo/activeMQ/logic/action/activeMQ.action.m)
  1. import org.apache.activemq.transport.stomp.StompConnection;

  2. public class ActiveMQ {

  3.         public static void activeMQSendMessage(String message) throws Exception {
  4.                 StompConnection conn = new StompConnection();
  5.                 try {
  6.                         conn.open("127.0.0.1", 61613);
  7.                         conn.connect("guest", "guest");
  8.                         conn.begin("StompTransaction");
  9.                         conn.send("/topic/test", message);
  10.                         conn.commit("StompTransaction");
  11.                 } finally {
  12.                         conn.close();
  13.                 }
  14.         }
  15. }
复制代码

   
2)创建功能process,引用上面的动作,并创建功能页面
        功能页面实现两个功能:
            发送消息
                    编辑框+按钮,调用上面的动作实现消息发送
  1. mainActivity.btnSendClick = function(event){
  2.         if ($("#inputText").val() == "") return;
  3.         
  4.         var params = new justep.Request.ActionParam();
  5.         params.setString("message", window.escape($("#inputText").val()));
  6.         justep.Request.sendBizRequest2({
  7.                 "action": "activeMQSendMessage",
  8.                 "parameters": params,
  9.                 "callback": function(callbackData) {
  10.                         callbackData.ignoreError = false;
  11.                         if (callbackData.state) {
  12.                                 $("#inputText").val("");
  13.                         }
  14.                 }
  15.         });
  16. };
复制代码
            接收消息
引用ActiveMQ WebSocket案例中自带的stomp.js,stomp.js 是使用 HTML5 Web Socket API 实现的 Stomp 客户端。   
页面中用Stomp实现消息接收
  1. mainActivity.model1Load = function(event){
  2.         var client = Stomp.client("ws://localhost:61614/stomp");

  3.         client.connect("guest", "guest", function(frame) {
  4.                 client.subscribe("/topic/test", function(msg) {
  5.                         $("#textReceiver").val(window.unescape(msg.body) + "\n" + $("#textReceiver").val());
  6.                 });
  7.         });
  8.         
  9.         $("#textReceiver").val("Receiving.....\n");
  10. };
复制代码
注意:ActiveMQ需要jdk 1.6,而X5开发版自带的是jdk 1.5,需要下载 32位的jdk1.6 替换X5中的jdk
由于jdk版本问题,动作的代码在studio中编译会报错,但是运行时编译运行都是正常的。


请用IE10以上版本或Chrome、Firefox浏览器


X5_DEMO_activeMQ.zip (12.18 KB, 下载次数: 3384)

998

主题

4330

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10726
QQ
发表于 2014-1-14 14:49:31 | 显示全部楼层
不错,支持
孤舟蓑笠翁,独钓寒江雪。
X5牛刀交流民间第一群:30057529
提供有偿服务,联系WX:18332024
bex5疑难问题解决方案

396

主题

2433

帖子

4863

积分

论坛元老

Rank: 8Rank: 8

积分
4863
QQ
发表于 2014-1-14 14:53:28 | 显示全部楼层
学习了!
QQ67886387

80

主题

345

帖子

1668

积分

金牌会员

Rank: 6Rank: 6

积分
1668
发表于 2014-1-25 09:57:41 | 显示全部楼层
请问下,这种实现方式,平台只是转发了下消息,请问应用服务器能用nodejs代替tomcat吧?

37

主题

713

帖子

3310

积分

内部用户

积分
3310
 楼主| 发表于 2014-1-26 10:10:23 | 显示全部楼层
rzport_lq0 发表于 2014-1-25 09:57
请问下,这种实现方式,平台只是转发了下消息,请问应用服务器能用nodejs代替tomcat吧? ...

没明白你问什么?
这个案例里面,消息的分发是由ActiveMQ完成的。
ActiveMQ和X5都是基于java的,只能用在Java的容器里。
匿名  发表于 2014-12-19 11:44:24
是手机端APP推送功能吗?(推送信息了,就在客户端直接像QQ、微信那样信息提示?)
不用Android服务端的SDK?iphone端的证书?
匿名  发表于 2014-12-19 11:45:30
X5版可以用?还是只有X5EE可以用?

130

主题

319

帖子

807

积分

高级会员

Rank: 4

积分
807
QQ
发表于 2016-3-23 11:18:24 | 显示全部楼层
我现在遇到一个问题,就是手机端一直断线,请问这个怎么解决,也就是监听者会断线 练级连接不上,请问x5有没有断线重连的方法。

27

主题

98

帖子

448

积分

中级会员

Rank: 3Rank: 3

积分
448
QQ
发表于 2016-4-9 19:21:21 | 显示全部楼层
其实直接用workman就可以了,没有这么复杂

12

主题

53

帖子

424

积分

中级会员

Rank: 3Rank: 3

积分
424
QQ
发表于 2016-6-8 08:02:08 | 显示全部楼层
好帖,mark
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-4-25 18:25 , Processed in 0.097623 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表