ThingJS-X 对接 WebSocket 本地服务
本帖最后由 tangan 于 2023-9-11 13:18 编辑启动的ThingJS-X会自动启动一个WebSocket服务,X4环境所有域共用一个此WebSocket服务;给此WS服务推送我们可以通过PostMan如下图示:https://pan.uinosoft.cn/files/image/2023/9/d02875a1642e1a2355363d74d4087859.png
我们也可以不用系统自启动的这个WS服务;下面是创建得本地WebSocket服务的脚本,做这个是可以自定义用ws给森X发送内容,摆脱手动Postman来发送:(ChatGPT自动生成)推送定时任务就很方便
------------------------------------------------------------------------------------------------------------------------------const WebSocket = require('ws');const http = require('http');
// 创建一个HTTP服务器const server = http.createServer((req, res) => { // 设置允许跨域请求 res.setHeader('Access-Control-Allow-Origin', 'http://10.100.33.73:8090');
// 允许带凭据的请求 res.setHeader('Access-Control-Allow-Credentials', 'true');
// 其他CORS头部也可以根据需要设置 res.setHeader('Access-Control-Request-Method', '*'); res.setHeader('Access-Control-Allow-Methods', 'OPTIONS, GET'); res.setHeader('Access-Control-Allow-Headers', '*');
// 处理预检请求 if (req.method === 'OPTIONS') { res.writeHead(200); res.end(); return; }
// 处理其他HTTP请求 res.writeHead(404); res.end();});
// 创建WebSocket服务器,将其附加到HTTP服务器const wss = new WebSocket.Server({ server });
wss.on('connection', (ws) => { console.log('Client connected');
// 每隔5秒向客户端发送消息 const interval = setInterval(() => { if (ws.readyState === WebSocket.OPEN) { ws.send(`{ "eventName": "eventValue", "data": "#A1" }`); } }, 5000);
// 接收客户端发送的消息 ws.on('message', (message) => { console.log(`Received message: ${message}`);
// 发送消息给客户端 //ws.send('Server received your message'); });
// 当连接关闭时触发 ws.on('close', () => { console.log('Client disconnected'); });});
// 启动HTTP服务器const PORT = process.env.PORT || 8085;console.log(process.env.PORT,'bocaige')server.listen(PORT, () => { console.log(`Server is listening on port ${PORT}`);});---------------------------------------------------------------------------------------------------------------------
保存至server.js启动如图示:https://pan.uinosoft.cn/files/image/2023/9/392c2b4bdd5d816f0038b05a20264ec4.png启动后关联ThingJS-X系统插件图示:https://pan.uinosoft.cn/files/image/2023/9/a5060cd57e88edc19b9584cabfe06676.png这样就可以使用本地Websocket服务向ThingJS-X发送任何消息了;
页:
[1]