当前位置:网站首页>#夏日挑战赛#【FFH】实时聊天室之WebSocket实战
#夏日挑战赛#【FFH】实时聊天室之WebSocket实战
2022-07-27 15:36:00 【51CTO】
#夏日挑战赛#【FFH】实时聊天室之WebSocket实战
前言
如果要实现像微信聊天一样的功能,在组网内进行通信显然是不够的,所以软总线并不作用与这种远距离传输。如果我们要完成微信的聊天功能,传统的方法就是利用webSocket借助服务器进行全双工通信。
WebSocket是什么?
WebSocket 是 一种在单个 TCP 连接上进行全双工通讯的网络通信协议。
在以前没有webSocket的时候,大家都用HTTP协议进行网络通信,但是HTTP协议是一个无状态,无连接,单向的应用层协议,因此只能让客户端对服务端进行单向请求,服务端无法主动向客户端发送消息,导致了像实时聊天这种业务开展起来比较困难。
有开发者就使用HTTP进行长轮询的方案,也就是说需要HTTP在一段时间内必须一直保持连接请求,以获取最新的服务器的消息。这样显然效率低下,而且非常浪费资源。
因此就诞生了WebSocket,只需要进行一次连接,就可以一直保持全双工的通信状态。
Demo展示
下面我们就来用官方提供的WebSocket接口实现一个简易实时聊天室的Demo。效果如下:
代码实现
可以看到官方文档的接口说明,我们只需要简单用到几个接口就可以实现我们的业务需求了。

① 申请网络权限
在config.json文件里面注册网络权限,该权限允许程序打开网络套接字,进行网络连接。
② 导入webSocket模块
③ 创建webSocket对象
接着我们调用createWebSocket()接口生成一个webSocket对象,并且保存起来。
④ 连接webSocket通道
调用connect()接口进行连接。这里需要一个URL作为参数传入,在这个demo中,直接用了一个以前开发好的服务器接口进行调用,但是不对外开放,因此大家只需要将自己开发好的接口地址放到”wsURL“内即可。
⑤ 订阅通道内消息更新
这里我们调用on( type:‘message’ )接口进行消息监听,这里要注意的是服务端传递过来的是字符串类型,所以如果消息是JSON对象,则需要用JSON.parse()进行解析,还原成JSON对象。
⑥ 发送消息
紧接着调用send()接口进行消息的发送,这里注意,如果要传递的是JSON对象,要使用JSON.stringify()进行序列化操作, 保证我们传递的是流字符串的形式。
在该接口的回调中,我们也可以打印出来,看看消息是否发送成功。
⑦ 隐藏标题栏
细心的小伙伴就会发现,我的demo展示的黑色标题栏不见了,其实是可以隐藏掉的,只需要在config.json文件中module.abilities下添加几行代码即可。
⑧ 样式设计
接着就是简单设计一下界面样式,把获取到的消息渲染出来就完成啦。
边栏推荐
- ES6 array method and pseudo array to array method
- Hyperlink parsing in MD: parsing `this$ Set() `, ` $` should be preceded by a space or escape character`\`
- 选择体育场馆的LED显示屏时应该注重哪些方面
- 写好技术原创文章的一点建议
- Kubernetes第七篇:使用kubernetes部署prometheus+grafana监控系统(Kubernetes工作实践类)
- Explain the idempotence of distributed system in detail
- Oracle-Linux-7.9是否能支持Oracle-19c的ACFS文件系统?
- 信通院陈屹力:降本增效是云原生应用最大价值
- How far can invisible orthodontics go under the tuyere?
- 【数据库系统概论(王珊)】第5章——数据库完整性
猜你喜欢

信通院陈屹力:降本增效是云原生应用最大价值

App crash collection and analysis

Database hyperphone (I)

泰山OFFICE技术讲座:WORD奇怪的段落边框

这种精度高,消耗资源少的大模型稀疏训练方法被阿里云科学家找到了!已被收录到IJCAI

Built in object (bottom)

一个端到端的基于 form 表单的文件上传程序,包含客户端和服务器端

.net core with microservices - what is a microservice

Three table joint query 2

大厂们终于无法忍受“加一秒”了,微软谷歌Meta等公司提议废除闰秒
随机推荐
数据库超话(二)
Smart fish tank design based on stm32
Maximum number less than n
Shell programming specifications and variables
深度学习能颠覆视频编解码吗?国家技术发明奖一等奖得主在小红书给你唠
Uncle's nephew and his students
通过 FileUploader 的初始化,了解 SAP UI5 应用的 StaticArea 初始化逻辑
Dense optical flow extraction dense_ Flow understanding
Gradient ring progress bar
Chen Yili of ICT Institute: reducing cost and increasing efficiency is the greatest value of cloud native applications
KMP template - string matching
国产新冠口服药为什么是治艾滋病的药
DDD(领域驱动设计)分层架构
Rare discounts on Apple's official website, with a discount of 600 yuan for all iphone13 series; Chess robot injured the fingers of chess playing children; Domestic go language lovers launch a new pro
How to extract tables from PDF through C /vb.net
WebView basic use
Two table joint query 1
这种精度高,消耗资源少的大模型稀疏训练方法被阿里云科学家找到了!已被收录到IJCAI
Three table joint query 1
密集光流提取dense_flow理解