52 lines
2.1 KiB
Markdown
52 lines
2.1 KiB
Markdown
|
|
[](https://pub.dev/packages/web_socket)
|
||
|
|
[](https://pub.dev/packages/web_socket/publisher)
|
||
|
|
|
||
|
|
An easy-to-use library for communicating with
|
||
|
|
[WebSockets](https://en.wikipedia.org/wiki/WebSocket) that has multiple
|
||
|
|
implementations.
|
||
|
|
|
||
|
|
## Why another WebSocket package?
|
||
|
|
|
||
|
|
The goal of `package:web_socket` is to provide a simple, well-defined
|
||
|
|
[WebSockets](https://en.wikipedia.org/wiki/WebSocket) interface that has
|
||
|
|
consistent behavior across implementations.
|
||
|
|
|
||
|
|
[`package:web_socket_channel`](https://pub.dev/documentation/web_socket_channel/)
|
||
|
|
is the most popular WebSocket package but it is complex and does not have
|
||
|
|
consistent behavior across implementations.
|
||
|
|
|
||
|
|
[`WebSocket`](https://pub.dev/documentation/web_socket/latest/web_socket/WebSocket-class.html)
|
||
|
|
currently has four implementations that all pass the same set of
|
||
|
|
[conformance tests](https://github.com/dart-lang/http/tree/master/pkgs/web_socket_conformance_tests):
|
||
|
|
|
||
|
|
* [`BrowserWebSocket`](https://pub.dev/documentation/web_socket/latest/browser_web_socket/BrowserWebSocket-class.html)
|
||
|
|
* [`CupertinoWebSocket`](https://pub.dev/documentation/cupertino_http/latest/cupertino_http/CupertinoWebSocket-class.html)
|
||
|
|
* [`IOWebSocket`](https://pub.dev/documentation/web_socket/latest/io_web_socket/IOWebSocket-class.html)
|
||
|
|
* [`OkHttpWebSocket`](https://pub.dev/documentation/ok_http/latest/ok_http/OkHttpWebSocket-class.html)
|
||
|
|
(currently experimental)
|
||
|
|
|
||
|
|
## Using
|
||
|
|
|
||
|
|
```dart
|
||
|
|
import 'package:web_socket/web_socket.dart';
|
||
|
|
|
||
|
|
void main() async {
|
||
|
|
final socket =
|
||
|
|
await WebSocket.connect(Uri.parse('wss://ws.postman-echo.com/raw'));
|
||
|
|
|
||
|
|
socket.events.listen((e) async {
|
||
|
|
switch (e) {
|
||
|
|
case TextDataReceived(text: final text):
|
||
|
|
print('Received Text: $text');
|
||
|
|
await socket.close();
|
||
|
|
case BinaryDataReceived(data: final data):
|
||
|
|
print('Received Binary: $data');
|
||
|
|
case CloseReceived(code: final code, reason: final reason):
|
||
|
|
print('Connection to server closed: $code [$reason]');
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
socket.sendText('Hello Dart WebSockets! 🎉');
|
||
|
|
}
|
||
|
|
```
|