分享
查看: 814|回复: 0

[分享] ThingJS-X 对接 WebSocket 本地服务

[复制链接]

ThingJS-X 对接 WebSocket 本地服务

发表于 2023-9-11 13:11:24 来自 分享 阅读模式 倒序浏览
zzv_icon814 zzr_icon0 查看全部
本帖最后由 tangan 于 2023-9-11 13:18 编辑

启动的ThingJS-X会自动启动一个WebSocket服务,X4环境所有域共用一个此WebSocket服务;
给此WS服务推送我们可以通过PostMan如下图示:
ThingJS-X 对接 WebSocket 本地服务
我们也可以不用系统自启动的这个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
启动如图示:
ThingJS-X 对接 WebSocket 本地服务
启动后关联ThingJS-X系统插件图示:
ThingJS-X 对接 WebSocket 本地服务
这样就可以使用本地Websocket服务向ThingJS-X发送任何消息了;

avatar
游客~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

130700ppkpl8x3t7tt1b1t