웹 페이지는 MQTT 프로토콜을 통해 서버와 상호작용, Mosca 설치 테스트
yum install nodejs
yum install zeromq-devel
,
vi /root/.bashrc
export NODE_PATH=/usr/lib/node_modules
mkdir devel
cd devel
npm install china-time -g
npm install log4js -g
npm install redis -g
npm install --save mosca
npm install forever -g
//node mqttserver.js
forever -a -l /home/mqttmosca/log.txt start mqttserver.js
mqttserver.js 소스 코드는 다음과 같습니다.
설명이 필요한 것은 원본 코드의 6000 포트는 mqtt 서버의 감청 포트를 대표하고 mqtt 클라이언트가 메시지를 발표하면 이 포트로 보낸다는 것이다.그러나 웹 페이지는 다르다. 웹 페이지는 9080 포트와 상호작용을 하고 웹 페이지 발표 메시지는 9080의 웹 서버에 먼저 보낸 다음에 6000 포트를 통해 구독자에게 보낸다.
var mosca = require('mosca');
var MqttServer = new mosca.Server({
port: 6000,
http: {
port: 9080,
bundle: true,
static: './'
}
});
MqttServer.on('ready', function(){
console.log('mqtt is running...');
//MqttServer.authenticate = authenticate;
});
MqttServer.on('clientConnected', function(client){
console.log('client connected', client.id);
});
MqttServer.on('clientDisconnected', function (client) {
console.log('Client Disconnected := ', client.id);
});
MqttServer.on('subscribed', function (topic, client) {
console.log("Subscribed :=", topic, client.id);
});
MqttServer.on('unsubscribed', function (topic, client) {
console.log('unsubscribed := ', topic, client.id);
});
MqttServer.on('published', function(packet, client) {
if (typeof (client) == "undefined")
return;
else
console.log('client ', client.id, ' publish :', 'topic ='+packet.topic+ ',message = '+ packet.payload.toString());
});
MqttServer.on("error", function (err) {
console.log(err);
});
index.html 소스는 다음과 같습니다.
<input type="text" id="msg"/>
<input type="button" value=" " onclick="subscribe()"/>
<input type="button" value=" " onclick="send()"/>
<input type="button" value=" " onclick="unsubscribe()"/>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.js"/>
<script>
var hostname = '192.168.1.2',
port = 9080,
clientId = 'clientmao2080',
timeout = 5,
keepAlive = 50,
cleanSession = false,
ssl = false,
userName = 'admin',
password = 'password',
topic = 'vulsun';
client = new Paho.MQTT.Client(hostname, port, clientId);
var options = {
invocationContext: {
host : hostname,
port: port,
path: client.path,
clientId: clientId
},
timeout: timeout,
keepAliveInterval: keepAlive,
cleanSession: cleanSession,
useSSL: ssl,
userName: userName,
password: password,
onSuccess: onConnect,
onFailure: function(e){
console.log(e);
}
};
client.connect(options);
function onConnect() {
console.log("onConnected");
}
client.onConnectionLost = onConnectionLost;
client.onMessageArrived = onMessageArrived;
function onConnectionLost(responseObject) {
console.log(responseObject);
if (responseObject.errorCode !== 0) {
console.log("onConnectionLost:"+responseObject.errorMessage);
console.log(" ");
}
}
function onMessageArrived(message) {
console.log(" :"+message.payloadString);
}
function send(){
var s = document.getElementById("msg").value;
if(s.length > 0){
message = new Paho.MQTT.Message(s);
message.destinationName = topic;
client.send(message);
document.getElementById("msg").value = "";
console.log(" "+s);
}
else {
alert(" ");
}
}
var count = 0;
function subscribe(){
client.subscribe(topic, { qos: 2});
console.log(" :"+topic);
}
function unsubscribe(){
client.unsubscribe(topic);
console.log(" :"+topic);
}
</script>
</code></pre>
<p> , 。</p>
<p> mosquitto_pub </p>
</div>
</div>
</div>
</div>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.