'use strict'; const { Controller } = require('ee-core'); const Log = require('ee-core/log'); const CoreWindow = require('ee-core/electron/window'); const WebSocket = require('ws'); // 引入原生 ws 库 let socket = null; class SocketController extends Controller { constructor(ctx) { super(ctx); } /** * Connect to WebSocket server */ connect() { socket = new WebSocket('ws://10.56.42.176:7074/ws'); const win = CoreWindow.getMainWindow() // 监听连接成功事件 socket.on('open', () => { console.log('socket open') // this.sendPing(); // 连接成功后发送 ping // win.webContents.send('controller.socket.connect', true); return true; }); // 监听消息事件 socket.on('message', (data) => { console.log('socket message') Log.info('Received:', data.toString()); win.webContents.send('controller.socket.message', data.toString()); }); // 监听连接关闭事件 socket.on('close', () => { console.log('socket close') Log.info('Disconnected from socket server'); }); // 监听错误事件 socket.on('error', (err) => { console.log('socket error') Log.error('socketError:', err); }); } /** * 发送 ping 消息 */ sendPing() { const message = JSON.stringify({ data: 'node', type: 'ping' }); this.sendMessage(message); } /** * 发送消息到服务器 * @param {string} message - JSON 字符串 */ sendMessage(message) { // 检查连接状态 console.log('sendMessage'); console.log(message); console.log(typeof socket); if (socket?.readyState === WebSocket.OPEN) { socket.send(message); // 使用 send() 发送 } else { Log.error('socket未连接或未就绪'); } } /** * 断开连接 */ disconnect() { console.log('disconnect'); if (socket) { socket.close(); // 使用 close() 方法 socket = null; } } } SocketController.toString = () => '[class SocketController]'; module.exports = SocketController;