路过的夏季 2023-07-03 16:04 采纳率: 81.3%
浏览 34
已结题

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
)

  • 写回答

2条回答 默认 最新

  • 自在猫先生 2023-07-03 17:51
    关注

    源于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()`函数。如果仍然遇到问题,请提供更多详细信息,以便我可以更好地帮助您解决问题。
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月12日
  • 已采纳回答 7月4日
  • 创建了问题 7月3日

悬赏问题

  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真
  • ¥15 关于#c语言#的问题,请各位专家解答!