auto.js websocket刚连接就关闭

auto.js websocket刚连接就关闭

img

auto.js  websocket模块代码

let ws = web.newWebSocket("ws://192.168.1.11:3000/basic", {
  eventThread: 'this'
});
ws.on("open", (res, ws) => {
  log("WebSocket已连接");
}).on("failure", (err, res, ws) => {
  log("WebSocket连接失败");
  console.error(err);
}).on("closing", (code, reason, ws) => {
  log("WebSocket关闭中");
}).on("text", (text, ws) => {
  console.info("收到文本消息: ", text);
  ws.send("收到");
}).on("binary", (bytes, ws) => {
  console.info("收到二进制消息:");
}).on("closed", (code, reason, ws) => {
  log("WebSocket已关闭: code = %d, reason = %s", code, reason);
});

setInterval(
  () => { }, 1000
)

源于chatGPT仅供参考

根据您提供的代码,websocket连接在打开后立即关闭可能是因为Auto.js脚本执行完毕导致程序终止。为了保持websocket连接,您可以通过以下方法之一:

1. 在连接成功后使用一个无限循环来保持脚本运行:
ws.on("open", () => {
  log("WebSocket已连接");
  while (true) {
    sleep(1000); // 延迟一段时间以避免过于频繁的循环
  }
}).on("failure", (err, res, ws) => {
  log("WebSocket连接失败");
  console.error(err);
}).on("closing", (code, reason, ws) => {
  log("WebSocket关闭中");
}).on("text", (text, ws) => {
  console.info("收到文本消息: ", text);
  ws.send("收到");
}).on("binary", (bytes, ws) => {
  console.info("收到二进制消息:");
}).on("closed", (code, reason, ws) => {
  log("WebSocket已关闭: code = %d, reason = %s", code, reason);
});

2. 使用一个等待事件的机制来保持脚本运行,比如`waitForEvent()`:
const waitForEvent = require('waitForEvent');

async function connectWebSocket() {
  let ws = web.newWebSocket("ws://192.168.1.11:3000/basic", {
    eventThread: 'this'
  });
  
  await waitForEvent(ws, "open");
  log("WebSocket已连接");

  ws.on("failure", (err, res, ws) => {
    log("WebSocket连接失败");
    console.error(err);
  }).on("closing", (code, reason, ws) => {
    log("WebSocket关闭中");
  }).on("text", (text, ws) => {
    console.info("收到文本消息: ", text);
    ws.send("收到");
  }).on("binary", (bytes, ws) => {
    console.info("收到二进制消息:");
  }).on("closed", (code, reason, ws) => {
    log("WebSocket已关闭: code = %d, reason = %s", code, reason);
  });

  await waitForEvent(ws, "closed"); // 等待WebSocket关闭事件
}

connectWebSocket();
上述代码中使用了`waitForEvent()`函数来等待指定的事件发生,保持脚本处于运行状态。

请注意,确保您的Auto.js版本支持websocket模块和`waitForEvent()`函数。如果仍然遇到问题,请提供更多详细信息,以便我可以更好地帮助您解决问题。