学习目标:
【了解】即时通讯业务场景和需求;
【了解】短连接和长连接
【了解】websocket协议
【掌握】环信im云实现十次方即时通讯功能
文章目录
一 即时通讯介绍
即时通信(Instant Messaging,简称IM)是一个允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流。 即时通讯技术应用于需要实时收发消息的业务场景。
二 短连接和长连接
即时通讯使用的是长连接
2.1 短连接
客户端和服务器每进行一次通讯,就建立一次连接,通讯结束就中断连接。
2.2 长连接
是指在建立连接后可以连续多次发送数据,直到双方断开连接。
HTTP从1.1版本起,底层的TCP使用的长连接。
使用长连接的HTTP协议,会在响应头加入代码:Connection:keep-alive
2.3 短连接和长连接的区别
2.3.1 通讯流程
- 短连接:创建连接 -> 传输数据 -> 关闭连接
- 长连接:创建连接 -> 传输数据 -> 保持连接 -> 传输数据 -> …… -> 关闭连接
2.3.2 适用场景
-
短连接:并发量大,数据交互不频繁情况
-
长连接:数据交互频繁,点对点的通讯
三 websocket协议
3.1 何为websocket协议
1. WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
- 单工就就像是汽车的单行道,是在只允许甲方向乙方传送信息,而乙方不能向甲方传送 。
- 何谓全双工:全双工(Full Duplex)是通讯传输的一个术语。双方在通信时允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合。全双工指可以同时进行信号的双向传输。指A→B的同时B→A,就像是双向车道。
2. 在 WebSocket中,浏览器和服务器只需要完成一次握手,就可以创建持久性的连接,并进行双向数据传输。
3. 在推送功能的实现技术上,相比使用Ajax 定时轮询的方式(setInterval),WebSocket 更节省服务器资源和带宽。
4. 服务器向客户端发送数据的功能是websocket协议的典型使用场景
3.2 websocket常用事件方法
使用 API 创建 WebSocket 对象:var Socket = new WebSocket(url, [protocol] );
- WebSocket 事件
以下是 WebSocket 对象的相关事件。假定我们使用了以上代码创建了 Socket 对象:
- WebSocket 方法
四 十次方的IM功能
前端页面使用十次方用户微服务认证用户身份,使用环信im云进行即时消息通信。
4.1 技术选型
- 环信IM云
- 前端框架 vue
- IM系统架构:存储层、服务层、逻辑层、接入层
4.2 环境和工具
- nodejs
- npm
- 前端框架 vue
- 开发工具 idea
4.3环信im云介绍
环信im云是即时通讯云 PaaS 平台,开发者可以通过简单的SDK和REST API对接。
- 支持安卓,iOS,Web等客户端SDK对接
- 提供单聊,群聊,聊天室等即时通讯功能
- 支持富媒体消息,实时音视频和各种自定义的扩展消息
4.4 创建应用
4.5 接口测试-获取token
- 使用环信提供的swagger接口调试页面测试接口
4.6 十次方即时通讯功能
4.5.1 用户微服务实现
- 创建tensquare_user子模块:Maven工程
- 在pom.xml中添加依赖
<dependencies>
<dependency>
<!--数据库驱动-->
<groupId>mysql&