gpt4 book ai didi

javascript - MQTT 客户端不工作

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:00 24 4
gpt4 key购买 nike

我正在尝试使用按钮单击事件发布消息。客户端应该发送 ONOFF 有效负载。由于某种原因,我无法理解为什么这不起作用。

server.js

var io = require('socket.io').listen(5000);
var mqtt = require('mqtt')
var client = mqtt.connect('mqtt://localhost:1883')

io.sockets.on('connection', function (socket) {
socket.on('publish', function (data) {
client.publish(data.topic, data.payload);
console.log('Publish to '+ data.payload);
});
});

client.js

var socket = io.connect('http://localhost:5000');

$('#button').ready(function () {
socket.on('connect', function () {
socket.on('mqtt', function (msg) {
console.log(msg.topic + ' ' + msg.payload);

$("#on").click('click', function () {
socket.emit('publish', {topic: 'test/test', payload: 'ON'});
console.log("on");
});

$("#off").click('click', function () {
socket.emit('publish', {topic: 'test/test', payload: 'OFF'});
console.log("off");
})

});
})
})

index.HTML

<h1>Test MQTT</h1>
<script src="https://code.jquery.com/jquery-3.1.1.js"></script>
<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
<div id="on" >
<input type="submit" value="ON" >
</div>

<div id="off">
<input type="submit" value="OFF">
</div>
<script src="client.js"></script>

最佳答案

目前,事件监听器 .clicksocket.on('mqtt' 回调) 触发之前不会真正触发。这将响应 'mqtt' 套接字事件。此事件在服务器发布之前不会触发,但服务器仅在客户端发出时发布 - 这仅在您单击按钮时发生。事件监听器在它们应该触发的事件触发之前无法添加。

重新整理一下你的逻辑:

$('#button').ready(function () {
socket.on('connect', function () {
$("#on").click('click', function () {
socket.emit('publish', {topic: 'test/test', payload: 'ON'});
console.log("on");
});

$("#off").click('click', function () {
socket.emit('publish', {topic: 'test/test', payload: 'OFF'});
console.log("off");
});

socket.on('mqtt', function (msg) {
console.log(msg.topic, msg.payload);
});
});
});

关于javascript - MQTT 客户端不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41685299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com