鸿蒙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()

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

相关推荐
葡萄皮sandy5 分钟前
SSE和WebSocket
网络·websocket·网络协议
酉鬼女又兒12 分钟前
零基础入门计算机网络网际层核心:IP数据报发送与转发完整流程、静态路由配置方法、路由环路成因与解决方案及历年考研经典例题深度解析
网络·tcp/ip·计算机网络·考研·职场和发展
hyunbar77729 分钟前
配置 Cloudflare Tunnel:把 Mac 上的 Web 服务变成安全域名
网络协议
qq_1958216536 分钟前
6. 应用层协议实现:CoE协议栈集成、对象字典配置、PDO映射
java·服务器·网络
程序猿零零漆1 小时前
Python核心进阶三连:闭包装饰器、深浅拷贝、网络编程从原理到实战
网络·python
袖手蹲1 小时前
K10 百炼 AI 语音助手从网络配置到全链路语音交互的嵌入式实战
网络·人工智能·交互
liulilittle1 小时前
KCC: An Exploration Along the Lines of BBR
网络·tcp/ip·计算机网络·bbr·通信·拥塞控制·kcc
星野爱8951 小时前
云顶之弈7周年新版本!手机随时随地畅玩周年时光机派对
网络·智能手机·电脑
AI科技星1 小时前
第六卷:量天尺传奇(几何学)
网络·人工智能·算法·概率论·学习方法·几何学·拓扑学
酉鬼女又兒2 小时前
零基础入门IPv4地址:从基本概念、分类编址、子网划分到无分类编址与应用规划全解
网络·网络协议·计算机网络·考研·职场和发展·分类·智能路由器