使⽤websocket连接Activemq,让前端接收MQTT消息
使⽤websocket连接Activemq,让前端接收MQTT消息
Activemq简介
Apache ActiveMQ™ is the most popular open source, multi-protocol, Java-based messaging server. It supports industry standard protocols so users get the benefits of client choices across a broad range of languages and platforms. Connectivity from C, C++, Python, .Net, and more is available. Integrate your multi-platform applications using the ubiquitous AMQP protocol. Exchange messages between your web applications using STOMP over websockets. Manage your IoT devices using MQTT. Support your existing JMS infrastructure and beyond. ActiveMQ offers the power and flexibility to support any messaging use-case.
翻译过来就是:
Apache ActiveMQ™是流⾏的开源,多协议,基于Java的消息服务器。它⽀持⾏业标准协议,因此⽤户可以通过⼴泛的语⾔和平台获得客户选择的好处。可以使⽤C,C ++,Python,.Net等语⾔进⾏连接。可以使⽤被⼴泛使⽤的AMQP协议集成多平台应⽤程序。使⽤STOMP(流式⽂本定向消息传递协议)通
过websockets 在Web应⽤程序之间交换消息。使⽤MQTT(基于发布/订阅范式的消息协议)管理IoT设备。⽀持现有的JMS基础架构等。ActiveMQ提供强⼤的功能和灵活性,以⽀持任何消息传递⽤例。
直接点:
Activemq就是⼀个消息中间件,由Java语⾔开发,可以⽀持多种语⾔连接。
重点:
Activemq需要Java环境
⽀持多协议连接
准备⼯作
1. 安装Activemq
2. 启动Activemq
需要sudo权限
websocket端⼝号:61614
3.
<script src="cdnjs.cloudflare/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js"type="text/javascript"></script>
简单⽰例
代码都在这⾥了,这只是测试代码,还是有很多bug的,需要周边代码来完善。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>mqtt-websocket测试</title>
// 替换成你的本地地址或者cdn地址
<script src='js/jquery-1.7.2.min.js'></script>
<script src="js/mqttws31.js"></script>
</head>
<body>
<div id="messages">
<button id="start_connect"onclick="connect_server()">连接</button>
<button id="stop_connect"onclick="dis_connect()">断开连接</button>
<br>
<input type="text"id="msg_input">
<button id="send_btn"onclick="send_msg()">发送</button>
</div>
<br>
开源mqtt服务器
<br>
<div id="ws_log"><p>⽇志</p><br></div>
<script>
var client;
// 订阅主题
var topic_name ='/test_mqtt_ws/web_client';
function connect_server(){
// 终端ID,可以随机,可以⼿动设定
// var clientID = "client-" + (Math.floor(Math.random() * 100000));
var clientID ='web-0001';
// Activemq中间件地址
client =new Messaging.Client('127.0.0.1',61614, clientID);
// 连接
// 根据需要选择
// userName: user,
// password: password,
// 连接成功
onSuccess: onConnect,
// 连接出错
onFailure: onFailure,
});
}
// 显⽰输出内容
function ws_logs(str){
$("#ws_log").append(str +"<br>");
}
// 建⽴连接
function onConnect(){
ws_logs("正在建⽴连接");
/
/ 订阅Topic
client.subscribe(topic_name);
}
// 连接失败
function onFailure(failure){
ws_logs("连接失败");
ws_Message);
}
// 监听消息
function onMessageArrived(message){
ws_logs(message.payloadString);
/
/ 如果你传输的是Json数据,在这⾥就可以进⾏解析了
var json_obj =eval('('+ message.payloadString +')')
if(d =='1'){
// 执⾏操作
}
}
// 连接中断
function onConnectionLost(){
Code !==0){
// client.clientId 可以获取到ClientID
ws_logs(client.clientId +": "+ Code);
}
}
// 主动断开连接
function dis_connect(){
client.disconnect();
ws_logs("断开连接");
return false;
}
// 发送消息
function send_msg(){
var mqtt_msg_send =$('#msg_input').val();
if(mqtt_msg_send){
message =new Messaging.Message(mqtt_msg_send);
message.destinationName = topic_name;
message.destinationName = topic_name;
// 发送mqtt消息
client.send(message);
$('#msg_input').val("");
}
return false;
}
</script>
</body>
</html>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。