我有一个朋友设置了一个 MQTT,通过带有某些单词的 Gmail 电子邮件触发,我想用它来设置一个脚本(通过 Chrome 中的用户脚本),并通过 MQTT 触发该脚本。
他设置了 MQTT 部分,但当他尝试将其集成到我们希望它激活的脚本中时,“require”不是正确的命令(错误指出“eslint:no-undef - 'require'未定义。”) 。这是相关的代码:
(function() {
console.log(`Script started`);
var mqtt = require('mqtt')
const client = mqtt.connect('mqtt://broker.hivemq.com');
console.log(`Script connected`);
textToSpeech("Starting");
client.on('connect', function () {
client.subscribe('thescriptthing/newemail', function (err) {
if (!err) {
console.log('Subscribed to topic');
}
});
});
有人有什么建议吗?
来自 mqtt.js 文档:
浏览器支持的唯一协议是基于 WebSockets 的 MQTT,因此 您必须使用
或ws://
协议。wss://
除此之外,您还需要指定正确的端口;来自 mqtt-dashboard.com:
- 主机:broker.hivemq.com
- TCP 端口:1883
- Websocket 端口:8000
- TLS TCP 端口:8883
- TLS Websocket 端口:8884
*您还需要使用路径
/mqtt
=> wss://broker.hivemq.com:8884/mqtt
这是一个示例脚本:
// ==UserScript==
// @name mqtt
// @namespace http://tampermonkey.net/
// @version 0.1
// @description mqtt.js test
// @author You
// @match https://stackoverflow.com/*
// @require https://unpkg.com/[email protected]/dist/mqtt.min.js
// @grant none
// ==/UserScript==
/* globals mqtt */
const client = mqtt.connect("wss://broker.hivemq.com:8884/mqtt");
client.on("connect", () => {
client.subscribe("thescriptthing/newemail", (err) => {
if (!err) {
console.log('Subscribed to topic');
}
});
});
client.on("message", (topic, message) => {
console.log(message.toString());
});