首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >基于嵌入式activeMQ的websocket mqtt

基于嵌入式activeMQ的websocket mqtt
EN

Stack Overflow用户
提问于 2015-04-07 00:55:33
回答 2查看 2.2K关注 0票数 0

我在tcp和websockets上设置了一个ActiveMQ代理作为MQTT,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BrokerService broker = new BrokerService();
broker.addConnector("mqtt://localhost:1883");
broker.addConnector("ws://0.0.0.0:1884");
broker.setPersistent(false);
broker.setBrokerName("default");
broker.start();

在我的类路径中,我有以下jars (因为我不想包含slf4j ):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
activemq-broker-5.11.1.jar          activemq-stomp-5.11.1.jar
activemq-client-5.11.1.jar          activemq-web-5.11.1.jar
activemq-http-5.11.1.jar            commons-codec-1.6.jar
activemq-mqtt-5.11.1.jar            geronimo-j2ee-management_1.1_spec-1.0.1.jar
activemq-openwire-legacy-5.11.1.jar     geronimo-jms_1.1_spec-1.1.1.jar
activemq-parent-5.11.1              hawtbuf-1.11.jar
activemq-spring-5.11.1.jar          mqtt-client-1.10.jar
javax.servlet-api-3.1.0.jar
javax.servlet.jsp.jstl-1.2.1.jar
javax.servlet.jsp.jstl-api-1.2.1-2.jar
jetty-all-9.2.8.v20150217.jar
slf4j-api-1.7.5
logback-classic-1.0.13
logback-core-1.0.13

当我试图与paho javascript客户端连接时,它会挂起,而我的蚊子到客户端则能够通过tcp进行连接,没有任何麻烦。

在日志中,我找到了这一行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEBUG o.a.a.t.ws.jetty9. MQTTSocket - Waiting for StompSocket to be properly started...

阅读代码后,我发现MQTTSocket (与StompSocket相同,两者都尝试过)正在等待一个只在doStart()中被计算下来的CountDownLatch对象。显然,doStart()从未被调用过。为什么?我怎么叫它?我遗漏了什么?

我的html / javascript:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
  <script src="shared/mqttws31-min.js" type="text/javascript"></script>
  <script type="text/javascript">

    //sample HTML/JS script that will publish/subscribe to topics in the Google Chrome Console
    //by Matthew Bordignon @bordignon on twitter.

    var wsbroker = "127.0.0.1";  //mqtt websocket enabled broker
    var wsport = 1884 // port for above

    var client = new Paho.MQTT.Client(wsbroker, wsport, "",
        "myclientid_" + parseInt(Math.random() * 100, 10));

    client.onConnectionLost = function (responseObject) {
      console.log("connection lost: " + responseObject.errorMessage);
    };

    client.onMessageArrived = function (message) {
      console.log(message.destinationName, ' -- ', message.payloadString);
    };

    var options = {
      timeout: 300,
      //mqttVersion: 3, // to constrain the protocol to version 3
      onSuccess: function () {
        console.log("mqtt connected");
        // Connection succeeded; subscribe to our topic, you can add multile lines of these
        client.subscribe('/World', {qos: 1});


        //use the below if you want to publish to a topic on connect
        message = new Paho.MQTT.Message("Hello");
        message.destinationName = "/World";
        client.send(message);

      },
      onFailure: function (message) {
        console.log("Connection failed: " + message.errorMessage);
      }
    };

  function init() {
      client.connect(options);
  }

    </script>
  </head>
  <h1>MQTT test</h1>
  <body onload="init();">
  </body>

</html>

编辑:我还尝试了xbeans配置,并使用了activeMQ附带的经过调整的xml文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
System.setProperty("activemq.conf", "conf");
System.setProperty("activemq.data", "data");

BrokerService broker;
try {
    broker = BrokerFactory.createBroker("xbean:activemq.xml");
    broker.start();
} catch (Exception e1) {
    e1.printStackTrace();
}

XML文件:

EN

回答 2

Stack Overflow用户

发布于 2015-04-27 07:37:05

  1. 我想broker.addConnector("ws://0.0.0.0:1884");应该是broker.addConnector("ws://localhost:1884");
  2. 我已经用mqttws编写并成功地运行了一个websocket-server,我怀疑您在那里丢失了websocket-server

请注意jetty-allwebsocket-server版本依赖于activemq-http版本。这些是我的gradle依赖项:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  compile group: "org.apache.activemq",  version: "5.11.+", name: "activemq-all"

  compile group: "org.apache.activemq",  version: "5.11.+", name: "activemq-mqtt"

  compile group: "org.apache.activemq",  version: "5.11.+", name: "activemq-http"

  compile group: "org.eclipse.jetty.aggregate",  version: "8.+", name: "jetty-all"  

  compile group: "org.eclipse.jetty.websocket",  version: "9.+", name: "websocket-server"  
  1. 可以指定单个连接器属性(例如名称):

TransportConnector连接器=新的TransportConnector();

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
connector = new TransportConnector();
connector.setUri(new URI("mqtt://localhost:1883"));
connector.setName("MQTTConn");
broker.addConnector(connector);

connector = new TransportConnector();
connector.setUri(new URI("ws://localhost:1884"));
connector.setName("WSConn");
broker.addConnector(connector);
票数 1
EN

Stack Overflow用户

发布于 2015-05-20 04:06:02

我向activemq添加了4行代码,现在它可以工作了。还不确定它是否会被包括在内,至少我在bug追踪器中发布了:

https://issues.apache.org/jira/browse/AMQ-5784

补丁:http://pastebin.com/phcsJHR5

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29487591

复制
相关文章
TCP/IP, WebSocket 和 MQTT
按照OSI网络分层模型,IP是网络层协议,TCP是传输层协议,而HTTP和MQTT是应用层的协议。在这三者之间, TCP是HTTP和MQTT底层的协议。大家对HTTP很熟悉,这里简要介绍下MQTT。MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器的通信协议。 HTTP的不足 HTTP协议经过多年的使用,发现了一些不
张善友
2018/01/19
5.4K0
TCP/IP,  WebSocket  和 MQTT
Wireshark抓取Websocket的mqtt报文
本文档记录,如何使用Wireshark抓包工具,抓取基于Websocket的MQTT报文。
yield9tk
2022/03/05
3.1K0
13-Websocket协议与MQ协议
Websocket和HTTP都是基于TCP协议的,所以使用抓包工具可以抓到websocket的数据
zx钟
2021/04/29
1.5K0
13-Websocket协议与MQ协议
基于ActiveMQ的请求-应答模式
基于ActiveMQ的请求-应答模式,相当于通过消息队列,请求端注册了一个异步回调,在发送消息时指定回调消息的目的地和关联的id,这样应答端在收到请求消息时,可以在处理后,将处理结果的应答消息发送到回调的目的地中。
张申傲
2020/09/03
5950
MQTT X Newsletter 2022-06 | v1.8.0 发布,新增 MQTT CLI 和 MQTT WebSocket 工具
在过去的一月中,MQTT X 发布了最新的 1.8.0 版本(下载地址:https://github.com/emqx/MQTTX/releases/tag/v1.8.0 ),优化部分使用体验和改进各项问题的同时,新增了 CLI 和 Web 端的 MQTT 客户端工具,支持在终端命令行或桌面浏览器上快速完成对 MQTT 的连接测试。
EMQ映云科技
2022/07/07
1K0
基于zookeeper+leveldb的activemq集群
1.为什么选择zookeepr+leveldb,构建activemq主从集群 官网关于主从集群的描述的原文地址为:http://activemq.apache.org/masterslave.html。下面是我的翻译. activemq有3中主从配置方式 主从类型 必备条件 优点 缺点 Shared File System Master Slave(共享文件系统) 需要一个共享文件系统 例如:SAN 可按需运行多个从节点,并能从故障中自动恢复 需要一个SAN JDBC Master Slave 需要个共享的
温安适
2018/05/17
1.7K1
基于WebSocket的client封装
最近已经陷于了Socket测试的泥潭中了,之前用Java写了一个Client封装类,本想在经历过本轮测试之后,写一些文档在发出来,没想到测试对象用的是Socket.IO,所以先把一个写好的WebSocket的Client的类发出来,分享一下。后台回复Git可以查看仓库地址,方便及时了解代码更新情况。
FunTester
2020/12/01
6190
Lua编写wireshark插件初探——解析Websocket上的MQTT协议
一、背景 最近在做物联网流量分析时发现, App在使用MQTT协议时往往通过SSL+WebSocket+MQTT这种方式与服务器通信,在使用SSL中间人截获数据后,Wireshark不能自动解析出MQTT语义,只能解析到WebSocket层,如图所示。虽然在Data域中显示了去掉mask的WebSocket数据,但分析起来mqtt仍然很难受。所以打算写一个插件,利用wireshark自带的MQTT解析功能来分析Data部分的数据,而不是自己从头写一个完全新的解析器。注:很多教程是教如何添加一个新的协议,如设
ascii0x03
2018/04/12
3.8K0
Lua编写wireshark插件初探——解析Websocket上的MQTT协议
ActiveMQ笔记(2):基于ZooKeeper的HA方案
activemq官网给出了3种master/slave的HA方案,详见:http://activemq.apache.org/masterslave.html ,基于共享文件目录,db,zookeeper。 下面演示了如何在本机搭建基于zookeeper的activemq集群: 一、在目录activemq1下安装activemq(可参考上篇内容),然后修改conf/activemq.xml 1 <broker xmlns="http://activemq.apache.org/schema/cor
菩提树下的杨过
2018/01/18
6140
ActiveMQ笔记(2):基于ZooKeeper的HA方案
activemq官网给出了3种master/slave的HA方案,详见:http://activemq.apache.org/masterslave.html ,基于共享文件目录,db,zookeeper。 下面演示了如何在本机搭建基于zookeeper的activemq集群: 一、在目录activemq1下安装activemq(可参考上篇内容),然后修改conf/activemq.xml 1 <broker xmlns="http://activemq.apache.org/schema/cor
菩提树下的杨过
2018/01/18
7220
基于Go的websocket消息服务
  3个月没写PHP了,这是我的第一个中小型go的websocket微服务。那么问题来了,github上那么多轮子,我为什么要自己造轮子呢?
sunsky
2020/08/20
7190
基于Go的websocket消息服务
php基于websocket的那些事儿
本文实例讲述了php基于websocket搭建简易聊天室实践。分享给大家供大家参考。具体如下:
php007
2019/08/05
8710
php基于websocket的那些事儿
基于MQTT的实时日志系统
MQTT是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTT是专门针对物联网开发的轻量级传输协议。MQTT协议针对低带宽网络,低计算能力的设备,做了特殊的优化,使得其能适应各种物联网应用场景。
IMWeb前端团队
2019/12/04
2.9K0
基于MQTT的实时日志系统
IMWeb前端团队
2017/12/29
2.7K0
基于MQTT的实时日志系统
使用 WebSocket 客户端连接 MQTT 服务器
近年来随着 Web 前端的快速发展,浏览器新特性层出不穷,越来越多的应用可以在浏览器端或通过浏览器渲染引擎实现,Web 应用的即时通信方式 WebSocket 得到了广泛的应用。
杨奉武
2018/12/28
16.6K0
【玩转ESP32】13、esp32 mqtt基础
MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。
ManInRoad
2021/07/23
1.4K0
【玩转ESP32】13、esp32 mqtt基础
EMQX vs Mosquitto | 2023 MQTT Broker 对比
物联网开发者需要为自己的物联网项目选择合适的 MQTT 消息产品或服务,从而构建可靠高效的基础数据层,保障上层物联网业务。目前市面上有很多开源的 MQTT 产品,在性能功能等方面各有优点。本文将选取目前最为流行的两个开源 MQTT Broker:EMQX 和 Mosquitto,从技术架构、性能、功能、社区情况等多维度进行 1v1 对比,帮助读者更加深入了解这两个产品。
EMQ映云科技
2023/04/21
2.8K0
Mosquitto vs NanoMQ | 2023 MQTT Broker 对比
Mosquitto 和 NanoMQ 都是用 C/C++ 开发的快速轻量的开源 MQTT Broker,完全支持 MQTT 3.1.1 和 5.0。
EMQ映云科技
2023/04/23
1.2K0
mqtt 客户端 基于Python
这几天一直在搞安全通信,微信小程序,反向代理等等,为了能让自己对整个系统做到把控,主要是需要了解每一个细节的地方,所以今天花了3个小时的时间学习了Python,因为我要用它来做Http和WebSocket ,其实还有就是群里的 "卡狼"一直在说用Python开发8266更方便快捷.
杨奉武
2018/12/28
1.9K0
点击加载更多

相似问题

基于websocket的Mqtt后端

10

基于ngx的websocket上的AWS MQTT

11

基于Apache SSL的websocket上的MQTT

11

ActiveMQ + MQTT +订阅"ActiveMQ.Advisory.Connection“

12

MQTT与ActiveMQ通信

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文