鸿蒙Next开发实战教程-使用WebSocket实现即时聊天

鸿蒙系统提供了WebSocket库,使用它可以很方面的实现即时聊天功能,今天就使用WebSocket来实现一个完整的聊天功能。

首先创建一个WebSocket实例:
登录后复制

plain 复制代码
let ws = webSocket.createWebSocket()

然后创建WebSocket连接,我找到一个简单的ws地址,它直接返回我们发送的消息:
登录后复制

plain 复制代码
let url = 'ws://124.222.224.186:8800'
this.ws.connect(url,(err,value)=>{  
  if(!err){    
    console.log('链接成功');    
    this.isConnected = true 
   }else {    
     console.log('连接失败')  
   }
})

接下来订阅WebSocket的相关事件,首先订阅WebSocket的打开事件,发送消息等事件要在该事件后才可以使用:
登录后复制

plain 复制代码
this.ws.on('open', (err: BusinessError, value: Object) => {  
  console.log("on open, status:" + (value as OutValue).status + ", message:" + (value as OutValue).message);  
  // 当收到on('open')事件时,可以通过send()方法与服务器进行通信
});

然后订阅消息事件:
登录后复制

plain 复制代码
this.ws.on('message',(error: BusinessError, value: string | ArrayBuffer) => {  
   console.log("on message, message:" + value);  
   let content:string = value.toString()  
   const reg = /<.*?>/g  
   content = content.replace(reg,'')  
   let item:MessageClass = {    id:'1',    content:content  }  
   this.msgList.push(item)  
   this.listScroller.scrollToIndex(this.msgList.length,true)
});

由于返回的消息为富文本,我这里加了一个正则过滤html标签,然后把它们存到数组里便于展示。

当我们发送消息时,可以调用send方法:
登录后复制

plain 复制代码
this.ws.send(content, (err: BusinessError, value: boolean) => {  
  if (!err) {    
    console.log("send success");      
  } else {    
    console.log("send fail, err:" + JSON.stringify(err));  
  }
});

另外,当需要关闭连接时可以调用close方法:
登录后复制

plain 复制代码
this.ws.close()

以上就是一个即时聊天功能的实现过程

相关推荐
2601_949499945 小时前
芯瑞科技 DT-1414 光模块工程实测:完美兼容博通(安华高) HFBR-1414PTZ,VCSEL 替代方案
大数据·网络·人工智能·科技·光模块
2501_915918415 小时前
iOS 怎么抓包?抓包鹰系统级 网卡 应用层三种方式对比,不越狱抓 iPhone 流量
网络协议·计算机网络·网络安全·ios·adb·https·udp
云边云科技_云网融合5 小时前
连锁门店 POS、监控、IoT 设备网络不稳定怎么解决?
网络·物联网
XR1234567886 小时前
学校宿舍区网络方案对比:多终端高并发下的认证、管理与体验
网络
March.s7 小时前
IP 存储核心 iSCSI:原理拆解 + 无报错实战指南
网络·网络协议·tcp/ip
超智算科技7 小时前
超智算领衔协办“NVIDIA创业企业展示·西安站”,全栈AI服务赋能行业生态协同发展
大数据·网络·人工智能·物联网·百度
️学习的小王8 小时前
基于UDP实现简易聊天室(基础版)——Python实现
网络·python·udp
砚凝霜8 小时前
软考网络工程师|第 5 章 路由基础、静态路由、RIP、OSPF、BGP、IS-IS 完整备考笔记
网络·笔记
Kina_C9 小时前
Keepalived 配置管理进阶:使用子配置文件实现模块化与高可读性
linux·网络·keepalived
星恒讯工业路由器9 小时前
4G(LTE)基础技术解析:从频段划分到网络架构的核心知识点
大数据·网络·信息与通信·工业物联网·4g lte·lte网络架构·无线通信基础