昨天写脚本的时候需要用到sockcet接口,在网上苦寻一番之后发现这个段代码还是比较ok的,今天拿出来给大家分享一下,需要的直接取!!
// 新建一个WebSocket // 指定websocket的事件回调在当前线程(好处是没有多线程问题要处理,坏处是不能阻塞当前线程,包括死循环) // 不加后面的参数则回调在IO线程 let ws = web.newWebSocket("wss://xxx.com", { eventThread: 'this' }); console.show(); // 监听他的各种事件 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); }).on("binary", (bytes, ws) => { console.info("收到二进制消息:"); console.info("hex: ", bytes.hex()); console.info("base64: ", bytes.base64()); console.info("md5: ", bytes.md5()); console.info("size: ", bytes.size()); console.info("bytes: ", bytes.toByteArray()); }).on("closed", (code, reason, ws) => { log("WebSocket已关闭: code = %d, reason = %s", code, reason); }); // 发送文本消息 log("发送消息: Hello, WebSocket!"); ws.send("h"); setTimeout(() => { // 两秒后发送二进制消息 log("发送二进制消息: 5piO5aSp5L2g6IO96ICDMTAw5YiG44CC"); ws.send(web.ByteString.decodeBase64("5piO5aSp5L2g6IO96ICDMTAw5YiG44CC")); }, 2000); setTimeout(() => { // 8秒后断开WebSocket log("断开WebSocket"); // 1000表示正常关闭 ws.close(1000, null); }, 8000); setTimeout(() => { log("退出程序"); }, 12000)