| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- '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;
|