#鸿蒙通关秘籍#如何在HarmonyOS中使用@ohos.net.webSocket模块建立WebSocket连接?

HarmonyOS
5h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
HTTPS风吟浅唱

要在HarmonyOS项目中建立WebSocket连接,可以按照以下步骤操作:

  1. 添加权限

    config.json文件中,确保添加网络访问权限以允许连接:

    {
      "name": "com.example.myapplication",
      "applicableDevice": [
        {
          "deviceType": "phone",
          "appPermissions": [
            "ohos.permission.INTERNET"
          ]
        }
      ]
    }
    
  2. 导入模块

    在JavaScript文件中,引入@ohos.net.webSocket模块,便于后续使用:

    import WebSocket from '@ohos.net.webSocket';
    
  3. 创建WebSocket客户端实例

    创建一个WebSocket客户端实例,并设置监听事件和连接参数:

    import { webSocket } from '@kit.NetworkKit';
    import { BusinessError } from '@kit.BasicServicesKit';
    
    let defaultIpAddress = "ws://";
    let ws = webSocket.createWebSocket();
    
    ws.on('open', (err:BusinessError, value: Object) => {
      if (err != undefined) {
        console.log(JSON.stringify(err));
        return;
      }
      ws.send("Hello, server!", (err: BusinessError, value: boolean) => {
        if (!err) {
          console.log("send success");
        } else {
          console.log("send fail, err:" + JSON.stringify(err));
        }
      });
    });
    
    ws.on('message',(error: BusinessError, value: string | ArrayBuffer) => {
      console.log("on message, message:" + value);
      if (value === 'bye') {
        ws.close((err: BusinessError, value: boolean) => {
          if (!err) {
            console.log("close success");
          } else {
            console.log("close fail, err is " + JSON.stringify(err));
          }
        });
      }
    });
    
    ws.on('close', (err: BusinessError, value: webSocket.CloseResult) => {
      console.log("on close, code is " + value.code + ", reason is " + value.reason);
    });
    
    ws.on('error', (err: BusinessError) => {
      console.log("on error, error:" + JSON.stringify(err));
    });
    
    ws.connect(defaultIpAddress, {
      header:{
          name1: 'value1',
          name2: 'value2',
          name3: 'value3'
      },
      proxy: {
          host: '192.168.0.150',
          port: 8888,
          exclusionList: []
      },
      protocol: 'my-protocol',
      }, (err: BusinessError, value: boolean) => {
      if (!err) {
        console.log("connect success");
      } else {
        console.log("connect fail, err:" + JSON.stringify(err));
      }
      ws.close((err: BusinessError) => {
        if (!err) {
          console.log("close success");
        } else {
          console.log("close fail, err is " + JSON.stringify(err));
        }
      });
    });
    
  4. 启动WebSocket连接

    使用connectToWebSocket()函数启动该连接。

    connectToWebSocket();
    

需注意连接必须是安全的(HTTPS),大多现代平台要求这样。此外,应增加重连逻辑与心跳包以保持连接稳定。

分享
微博
QQ
微信
回复
3h前
相关问题
HarmonyOS Websocket?
71浏览 • 0回复 待解决
HarmonyOS websocket使用问题
177浏览 • 1回复 待解决
WebSocket连接是否支持MQTT协议
1844浏览 • 1回复 待解决