用户有涉及IM聊天,HarmonyOS是否有WebSocket相关组件或者使用示例

用户有涉及IM聊天,HarmonyOS是否有WebSocket相关组件或者使用示例。

HarmonyOS
2024-09-10 12:48:00
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

WebSocket相关示例如下:

HarmonyOS开发代码如下:

import webSocket from '@ohos.net.webSocket'; 
import { BusinessError } from '@ohos.base'; 
@Entry 
@Component 
struct  webSock{ 
  ws:webSocket.WebSocket = webSocket.createWebSocket(); 
  defaultIpAddress = "ws://10.xxx.7.xxx:3000"; //对应的IP地址 
 
  aboutToAppear(): void { 
    this.ws.on('open', (err:BusinessError, value: Object) => { 
      if (err != undefined) { 
        console.log(JSON.stringify(err)); 
        return; 
      } 
      // 当收到on('open')事件时,可以通过send()方法与服务器进行通信 
      this.ws.send("Hello, server!", (err: BusinessError, value: boolean) => { 
        if (!err) { 
          console.log("send success"); 
        } else { 
          console.log("send fail, err:" + JSON.stringify(err)); 
        } 
      }); 
    }); 
    this.ws.on('message',(error: BusinessError, value: string | ArrayBuffer) => { 
      console.log("on message, message:" + value); 
      // 当收到服务器的`bye`消息时(此消息字段仅为示意,具体字段需要与服务器协商),主动断开连接 
      if (value === 'bye') { 
        this.ws.close((err: BusinessError, value: boolean) => { 
          if (!err) { 
            console.log("close success"); 
          } else { 
            console.log("close fail, err is " + JSON.stringify(err)); 
          } 
        }); 
      } 
    }); 
    this.ws.on('close', (err: BusinessError, value: webSocket.CloseResult) => { 
      console.log("on close, code is " + value.code + ", reason is " + value.reason); 
    }); 
    this.ws.on('error', (err: BusinessError) => { 
      console.log("on error, error:" + JSON.stringify(err)); 
    }); 
    this.ws.connect(this.defaultIpAddress, (err: BusinessError, value: boolean) => { 
      if (!err) { 
        console.log("connect success"); 
      } else { 
        console.log("connect fail, err:" + JSON.stringify(err)); 
      } 
    }); 
  } 
 
  build(){ 
    Button().onClick(()=>{ 
      this.ws.send("我发个消息") 
    }) 
  } 
}

服务端代码如下:

var ws = require("nodejs-websocket") 
 
// 创建一个服务server,每次用户链接,函数就会被执行,并给当前用户创建一个connect对象 
var server = ws.createServer(connect => { 
  // 每当接收到用户传递过来的数据,就会触发text事件,并传入数据 
  connect.on("text", data => { 
    // 给用户响应数据 
    // connect.sendText(data.toUpperCase()+"!!!") //转换大小写并并拼接字符串 
    connect.send(data) 
    console.log(data) 
  }) 
 
  //监听websocket断开链接 
  connect.on("close", () => { 
    console.log("websocket连接断开....") 
  }) 
 
  //监听websocket异常信息 
  connect.on("error", () => { 
    console.log("websocket连接异常....") 
  }) 
}) 
server.listen(3000, () => { 
  console.log("websocket running") 
})
分享
微博
QQ
微信
回复
2024-09-10 17:24:25
相关问题
是否相关折叠屏适配文档?
1755浏览 • 1回复 待解决
HarmonyOS 组件是否长按事件?
212浏览 • 1回复 待解决
websocket和http数据请求示例
626浏览 • 1回复 待解决
HarmonyOS 是否类似事件总线组件
180浏览 • 1回复 待解决
HarmonyOS 是否类似画板功能组件
172浏览 • 1回复 待解决
咨询下WebSocket相关问题
315浏览 • 1回复 待解决
HarmonyOS 组件是否销毁回调方法
280浏览 • 1回复 待解决
证书锁定功能示例哪些?
606浏览 • 1回复 待解决
HarmonyOS websocket使用问题
41浏览 • 1回复 待解决
HarmonyOS是否带图片的Toast组件
150浏览 • 1回复 待解决
Image组件是否缓存机制
1026浏览 • 1回复 待解决
ArkTS是否官方Toast组件
158浏览 • 1回复 待解决