websocket

4.2.8 新增

稳定性: 稳定

websocket 模块,采用 okhttp3 实现,本模块中包含了 okhttp3 核心所有的类,下面讲解其基本的使用方法,更多的使用规则,可参考:(https://square.github.io/okhttp/),这里涉及一些线程安全问题,请学习多线程,生命周期等内容。

创建 websocket 客户端

  • 创建一个 http client,可以设定 client 是否重连,心跳等功能
  • 创建一个 request 请求对象,采用什么协议 ws 或 wss 、服务器、端口都能内容
  • 设置监听,当 websocket 生命周期内的一些事情。
  • 设置上面的操作以后,打开链接,创建 webSocket 客户端。
  • 用 webSocket 客户端 发送消息 webSocket.send("你好服务器");
1importPackage(Packages["okhttp3"]); //导入包
2var client = new OkHttpClient.Builder().retryOnConnectionFailure(true).build();
3var request = new Request.Builder().url("ws://192.168.31.164:9317").build(); //vscode  插件的ip地址,
4client.dispatcher().cancelAll(); //清理一次
5myListener = {
6    onOpen: function (webSocket, response) {
7        print("onOpen");
8        //打开链接后,想服务器端发送一条消息
9        var json = {};
10        json.type = "hello";
11        json.data = { device_name: "模拟设备", client_version: 123, app_version: 123, app_version_code: "233" };
12        var hello = JSON.stringify(json);
13        webSocket.send(hello);
14    },
15    onMessage: function (webSocket, msg) {
16        //msg可能是字符串,也可能是byte数组,取决于服务器送的内容
17        print("msg");
18        print(msg);
19    },
20    onClosing: function (webSocket, code, response) {
21        print("正在关闭");
22    },
23    onClosed: function (webSocket, code, response) {
24        print("已关闭");
25    },
26    onFailure: function (webSocket, t, response) {
27        print("错误");
28        print(t);
29    },
30};
31
32var webSocket = client.newWebSocket(request, new WebSocketListener(myListener)); //创建链接
33
34setInterval(() => {
35    // 防止主线程退出
36}, 1000);

创建 websocket 服务器端,一样支持,可以参考 okhttp 官网。