源于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()`函数。如果仍然遇到问题,请提供更多详细信息,以便我可以更好地帮助您解决问题。