文章目录
WebSocket 在我们平时开发推送、聊天、数据传输时经常使用,无论是 Web 端还是移动端。那么这节博客我们将介绍 Flutter 中 WebSocket 的基本使用:连接、发送消息、接收消息、断开连接。Flutter 自身 SDK 带 WebSocket 功能,或者通过第三方插件库也可以实现这些功能,这两种实现方式都非常简单,本节博客会给大家讲解。
1.WebSocket介绍
在开始学习之前,先给大家简单介绍下 WebSocket。我们应该对 Socket 和TCP、UDP 协议都有所了解,它们都可以用来做长链接、数据通信。WebSocket 也是基于 TCP 实现的双向全双工通信协议,它可以实现客户端和服务器端数据双向传输交换。只需连接一次,便可以持久化连接通信。
这里我们可以对比 HTTP 来了解 WebSocket 的特性,我们知道 HTTP 是单向的请求/响应式协议,是无连接的协议,客户端发起请求,服务器端对请求做相应处理,这个过程是单向的。如果服务器端有数据或状态变化,无法及时告知客户端,所以很多的推送如果用 HTTP 来实现的话,都是进行轮询,这样不但效率低、容易出错,而且浪费资源,毕竟它是不停的发送 HTTP 请求给服务器端进行轮询。
那么 WebSocket 就解决了这个问题,它可以双向通信,并且是长连接、无需轮询,效率大大提升。
而使用 WebSocket 很简单,一般就如下几个步骤和功能:
- 连接 WebSocket 服务器
- 发送消息
- 接收消息
- 关闭 WebSocket 连接
那么接下来我们就学习下 Flutter 中 WebSocket 的基本用法。
2.WebSocket简单用法
Flutter SDK 中目前已经自带 WebSocket API。基本的使用步骤就是:连接 WebSocket 服务器、发送消息、接收消息、关闭 WebSocket 连接。
基本用法就这些,怎么样,是不是很简单?
接下来我们看下通过第三方插件库进行 WebSocket 通信的基本用法。
3.第三方插件库实现 WebSocket
第三方插件库我们选择官方的插件库:websocketchannel。
基本使用步骤也都是:连接 WebSocket 服务器、发送消息、接收消息、关闭 WebSocket 连接。
插件库地址:https://pub.dev/packages/websocketchannel
首先安装。
在项目的 pubspec.yaml 里加入引用:
导入包:
连接 WebSocket 服务器:
发送消息:
以上就是 Flutter 通过第三方插件库实现 WebSocket 通信功能的基本步骤。
当然 Flutter 也支持 Socket 相关 API 操作,大家可以自行学习。