0 purchases
ya websocket
ya_websocket #
一个使用 iOS 和 Android 上原生库进行 WebSocket 通信的 Flutter 插件。
Flutter plugin for WebSocket communication using native libraries on iOS and Android.
由于使用 Flutter 的 WebSocket 库尝试连接某台 IoT 设备通信时,总是无法连接,所以单独做了一个 WebSocket 库,它基于各系统中已经成熟的库进行通信。
感谢这些好用的库 | Acknowledgements #
平 台
Flutter 插件语言
原生端使用的库
库版本
库使用的语言
iOS
Kotlin
Java-WebSocket
1.5.2
Java
Android
Swift
Starscream
4.0.4
Swift
系统版本要求 | Supported platforms #
平 台
可运行最低版本
推荐最低版本
Dart
2.12.0
2.13.4
Flutter
2
2.2.3
iOS
10
14
Android
4.1
11
在使用本插件前,请先将 APP 的适用版本设置为「可运行最低版本」之上。
引入 | Installing #
如果您准备使用 release 发布版本:
在项目目录中,运行 flutter pub add ya_websocket 。
运行后,您项目中 pubspec.yaml 中的 dependencies: 节会自动添加一行代码(并自动运行 dart pub get) :
ya_websocket: ^(使用的版本号,你也可以修改它)
copied to clipboard
如果您准备使用 main 主线版本,请添加:
编辑您项目中的文件 pubspec.yaml,在 dependencies: 节添加以下代码:
ya_websocket:
git:
url: git://github.com/kagurazakayashi/yaWebSocket.git
ref: main
copied to clipboard
保存后,在项目目录中运行 flutter pub get .
使用 | Usage #
导入包: import 'package:ya_websocket/ya_websocket.dart';
在需要的类中实现接口 class ... implements YaWebsocketDelegate,实现以下接口:
已连接时
yaWebsocketDelegateOnOpen(String httpStatus, String httpStatusMessage, String? tag);
参数:
httpStatus: HTTP 状态码
httpStatusMessage: 状态描述文本
tag: 自定义标记
开始尝试连接时
yaWebsocketDelegateOnConnecting(String? tag);
参数:
tag: 自定义标记
收到信息时
yaWebsocketDelegateOnMessage(String message, String? tag);
参数:
message: 信息内容
tag: 自定义标记
连接关闭时 (Android 和 iOS 返回信息可能有区别)
yaWebsocketDelegateOnClose(String code, String reason, String remote, String? tag);
参数:
code: 状态代码
reason: 描述文本
remote: 是否由远程关闭
tag: 自定义标记
连接发生错误时 (Android 和 iOS 返回信息可能有区别)
yaWebsocketDelegateOnError(String localizedMessage, String? message, String? tag);
参数:
localizedMessage: 本地化描述文本
message: 描述文本
tag: 自定义标记
通常情况下的状态代码( code )
-1 表示操作失败/不正常
0 表示正常/正常地处于关闭状态
1 表示正常/正常地处于开启状态
创建对象: YaWebsocket websocket = YaWebsocket();
指定接口实现类: _websocket.delegate = this;
开始连接: websocket.connect(uri, tag: tag);
参数:
uri: Websocket 的连接地址,以 ws:// 开头。
tag: 可选标签,可以输入任意字符串,库调用接口返回时,会带上它。
返回值(字符串字典):
status:
0: 现在开始连接,请等待接口收到 yaWebsocketDelegateOnOpen 或 yaWebsocketDelegateOnClose 调用后再进行下一步。
-1: 未能开始连接
info: (可选)如果未能开始连接,可能提供此错误信息描述
检查是否连接 websocket.isOpen();
返回值(字符串字典):
status:
1: 已连接
0: 未连接
-1: 未能查询
info: (可选)如果未能查询,可能提供此错误信息描述
发送数据: websocket.send(text);
参数:
text: 要发送的字符串
返回值(字符串字典):
status:
0: 已发送
-1: 未发送
info: (可选)如果未能发送,可能提供此错误信息描述
断开连接: websocket.close();
返回值(字符串字典):
status:
0: 关闭成功或已经处于关闭状态,关闭成功接口将收到 yaWebsocketDelegateOnClose 调用。
-1: 遇到问题
info: (可选)如果遇到问题,可能提供此错误信息描述
注意事项 | NOTE #
执行 websocket.* 时会立即有返回值,该返回值通常只表示是否成功开始执行。真正的运行结果状态回调在 YaWebsocketDelegate 。
正在进行操作时(如正在连接、正在断开链接时)不要进行操作,尤其是重复的连接和断开操作,请等到收到状态回调后再进行下一步操作。
连接关闭的回调 yaWebsocketDelegateOnClose 会在每次连接关闭时触发,而错误回调 yaWebsocketDelegateOnError 仅在识别到错误时触发。如果因错误断开,yaWebsocketDelegateOnError 和 yaWebsocketDelegateOnClose 都会触发。因此建议在 yaWebsocketDelegateOnClose 中判断连接关闭。
示例程序 | Example app #
DEMO 演示了 连接、发送、接收、断开、重新连接 的过程。
在输入框中输入 ws:// 地址进行连接。
然后输入内容并发送,屏幕上会以聊天式气泡显示接收和发送的信息。
点按右上角连接图标可以连接和断开,请在当前连接或断开操作完成或超时后再按。
iOS 示例程序 | Android 示例程序
另请参阅 | More #
dartdoc | 更新日志
许可 | LICENSE #
Code License
Icon Clip Art License
Java-WebSocket License
Starscream License
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.