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

首先创建一个WebSocket实例:

let ws = webSocket.createWebSocket()

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

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的打开事件,发送消息等事件要在该事件后才可以使用:

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()方法与服务器进行通信
});

然后订阅消息事件:

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方法:

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

另外,当需要关闭连接时可以调用close方法:

this.ws.close()

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

鸿蒙Next开发实战教程-使用WebSocket实现即时聊天的更多相关文章

  1. Swift游戏开发实战教程(霸内部信息大学)

    Swift游戏开发实战教程(大学霸内部资料) 试读下载地址:http://pan.baidu.com/s/1sj7DvQH 介绍:本教程是国内第一本Swift游戏开发专向资料. 本教程具体解说记忆配对 ...

  2. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发4- 后台模板html页面创建

    上一篇教程<asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发>完成了本项目的登录模块,登录后就需要进入后台管理首页了,需要准备一个后台模 ...

  3. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发2-Model层建立

    上篇(asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作)文章讲解了开发过程中的准备工作,主要创建了项目数据库及项目,本文主要讲解项目M层的实现,M层这里 ...

  4. 微信小程序-云开发实战教程

    微信小程序-云开发实战教程 云函数,云存储,云数据库,云调用 https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/gettin ...

  5. Python开发实战教程(8)-向网页提交获取数据

    来这里找志同道合的小伙伴!↑↑↑ Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知 ...

  6. React Native Android原生模块开发实战|教程|心得|怎样创建React Native Android原生模块

    尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691503) 告诉大家一个好消息. ...

  7. iOS通过SocketRocket实现websocket的即时聊天

    之前公司的即时聊天用的是常轮循,一直都觉得很不科学,最近后台说配置好了socket服务器,我高兴地准备用asyncsocket,但是告诉我要用websocket,基于HTML5的,HTML5中提出了一 ...

  8. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发

    进行本文之前需要在数据库用户表里面增加一条用户数据,直接手动添加即可,未安全考虑密码一定要使用Md5加密后的,这里提供666666的Md5密文为(c831b04de153469d),本文完成登录模块的 ...

  9. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作

    /****** Object: 新闻表 Script Date: 2017/9/2 星期六 15:11:12 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENT ...

  10. php扩展开发实战教程(1)

    我的开发环境: Ubuntu16.04 apt方式安装的php5.6, apache,mysql等 由于我的本机用的是apt方式安装的php,所以我这里从头开始用最精简的方式,编译安装一个php5.4 ...

随机推荐

  1. Springboot 3.x 使用PageHelper实现MyBatis分页查询

    开发环境 SpringBoot 3.0.1 Maven 工程 JDK OpenJdk 17.0.6 引入pom依赖 <dependency> <groupId>com.gith ...

  2. YASKAWA安川机器人DX100轴控制基板维修解析知识

    ASKAWA安川机器人DX100轴控制基板的维修是一项复杂而精细的工作,要求具备丰富的知识和实践经验.通过与子锐机器人维修联系,希望能企业提供一些有益的参考和帮助,在面对轴板故障时能够迅速准确地找到问 ...

  3. cJSON解析器总结[转载]

    一. 简介 cJson 是c语言编写的一个解析器. 是一个超轻巧,携带方便,单文件,简单的可以作为ANSI-C标准的JSON解析器.主要两个文件cJSON.c 和cJSON.h . 主要用来编码和解析 ...

  4. QT5笔记: 15. 其他显示组件的常用功能

    其他显示组件的常用功能 代码 #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget ...

  5. autMan奥特曼机器人-实时翻译的用法

    一.基本配置 访问并登录百度翻译开放平台:https://api.fanyi.baidu.com/ 进入开发者信息获取 APP ID和密钥,并开通"通用文本翻译"服务 autMan ...

  6. Linux - Centos6/7忘记root密码怎么办?

    转载:https://www.cnblogs.com/witz/p/10183533.html 一.Centos6.x (1)查看操作系统版本以及内核版本 (2)重启服务器,到如下界面 (3)好吧.. ...

  7. KTransformer实战DeepSeek-R1-1.58bit量化模型

    技术背景 在上一篇文章中,我们介绍过KTransformers大模型高性能加载工具的安装和使用方法.但是当时因为是在一个比较老旧的硬件上面进行测试,其实并没有真正的运行起来.现在补一个在KTransf ...

  8. linux tmux 使用教程

    前言 Tmux 是一个终端复用器(terminal multiplexer),非常有用,属于常用的开发工具. 本文介绍如何使用 Tmux. 一.Tmux 是什么? 1.1 会话与进程 命令行的典型使用 ...

  9. MySQL配置主从复制教程(MySQL8)

    原理: 数据库在进行DDL和DML语句操作时,会被记录到binlog的日志文件里,而读取这里面的日志就可以知道数据库进行过哪些DDL和DML操作,这是主数据库的日志,从数据库经过相关配置可以实时获取到 ...

  10. linux 各种防火墙

    一.iptables防火墙1.基本操作 # 查看防火墙状态 service iptables status # 停止防火墙 service iptables stop # 启动防火墙 service ...