为什么我无法连接到 hivemq 代理,套接字在我尝试重新连接时继续关闭?
Why cannot I connect to hivemq broker the socket keep on getting closed when I try to reconnect?
我已经写了一个 rfid 值并在内部订阅时 javascript,套接字连接丢失,我附上了我的控制台的屏幕截图。
value.php
<body>
<div id="print"></div>
<!-- jquery library -->
<script src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
<!-- paho MQTT library -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<script src="app.js"></script>
</body>
我正在尝试使用 hivemq 代理进行连接并使用端口号 8000,但未连接。
app.js
var hostname = "broker.hivemq.com";
var clientId = "someid";
var username = "username";
var password = "password";
var subscription = "sometopicname";
mqttClient = new Paho.MQTT.Client(hostname, 8000, clientId);
mqttClient.onMessageArrived = MessageArrived;
mqttClient.onConnectionLost = ConnectionLost;
Connect();
function Connect() {
mqttClient.connect({
onSuccess: Connected,
onFailure: ConnectionFailed,
userName: username,
password: password,
useSSL: false
});
}
function Connected() {
console.log("Connected");
mqttClient.subscribe(subscription);
}
function ConnectionFailed(res) {
console.log("Connection failed: " + res.errorMessage);
}
function ConnectionLost(res) {
if (res.errorCode !== 0) {
console.log("Connection lost:" + res.errorMessage);
Connect();
}
}
function MessageArrived(message) {
console.log(message.payloadString);
}
首先,您是否 100% 确定端口 8000 已配置为支持 Websockets 上的 MQTT。
其次,您似乎有一个硬编码的 clientId 值,这样您一次只能连接 1 个客户端。每个页面都需要有一个唯一的 clientId,如果您尝试连接 2 个具有相同 clientId 的客户端(在任何浏览器中该页面的 2 个或更多实例)会将另一个从代理中踢出。 ClientIds 必须是全局唯一的。
如果在检查了第一个并修复了第二个之后,您应该检查代理日志以查看它可能关闭连接的原因。
我已经写了一个 rfid 值并在内部订阅时 javascript,套接字连接丢失,我附上了我的控制台的屏幕截图。
value.php
<body>
<div id="print"></div>
<!-- jquery library -->
<script src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
<!-- paho MQTT library -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
<script src="app.js"></script>
</body>
我正在尝试使用 hivemq 代理进行连接并使用端口号 8000,但未连接。
app.js
var hostname = "broker.hivemq.com";
var clientId = "someid";
var username = "username";
var password = "password";
var subscription = "sometopicname";
mqttClient = new Paho.MQTT.Client(hostname, 8000, clientId);
mqttClient.onMessageArrived = MessageArrived;
mqttClient.onConnectionLost = ConnectionLost;
Connect();
function Connect() {
mqttClient.connect({
onSuccess: Connected,
onFailure: ConnectionFailed,
userName: username,
password: password,
useSSL: false
});
}
function Connected() {
console.log("Connected");
mqttClient.subscribe(subscription);
}
function ConnectionFailed(res) {
console.log("Connection failed: " + res.errorMessage);
}
function ConnectionLost(res) {
if (res.errorCode !== 0) {
console.log("Connection lost:" + res.errorMessage);
Connect();
}
}
function MessageArrived(message) {
console.log(message.payloadString);
}
首先,您是否 100% 确定端口 8000 已配置为支持 Websockets 上的 MQTT。
其次,您似乎有一个硬编码的 clientId 值,这样您一次只能连接 1 个客户端。每个页面都需要有一个唯一的 clientId,如果您尝试连接 2 个具有相同 clientId 的客户端(在任何浏览器中该页面的 2 个或更多实例)会将另一个从代理中踢出。 ClientIds 必须是全局唯一的。
如果在检查了第一个并修复了第二个之后,您应该检查代理日志以查看它可能关闭连接的原因。