Skip to content

Commit 068b906

Browse files
committed
Add pingInterval
1 parent c9a9a51 commit 068b906

File tree

5 files changed

+41
-3
lines changed

5 files changed

+41
-3
lines changed

packages/networker/networker_socket/lib/client.dart

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ import 'dart:typed_data';
66
import 'package:networker/networker.dart';
77
import 'package:web_socket_channel/web_socket_channel.dart';
88

9+
import 'src/web_socket.dart';
10+
11+
export 'src/web_socket.dart';
12+
913
class NetworkerSocketClient extends NetworkerClient {
1014
static List<String> supportedSchemes = List.unmodifiable(['ws', 'wss']);
1115

@@ -14,6 +18,7 @@ class NetworkerSocketClient extends NetworkerClient {
1418
@override
1519
final Uri address;
1620
final Iterable<String>? protocols;
21+
final Duration? pingInterval;
1722

1823
WebSocketChannel? get channel => _channel;
1924

@@ -26,15 +31,15 @@ class NetworkerSocketClient extends NetworkerClient {
2631
@override
2732
Stream<void> get onOpen => _onOpen.stream;
2833

29-
NetworkerSocketClient(this.address, {this.protocols});
34+
NetworkerSocketClient(this.address, {this.protocols, this.pingInterval});
3035

3136
@override
3237
Future<void> init() async {
3338
if (isOpen) {
3439
return;
3540
}
36-
final channel =
37-
_channel = WebSocketChannel.connect(address, protocols: protocols);
41+
final channel = _channel = constructWebSocketChannel(address,
42+
protocols: protocols, pingInterval: pingInterval);
3843
channel.stream.listen((event) {
3944
onMessage(event);
4045
}, onDone: () {
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import 'package:web_socket_channel/web_socket_channel.dart';
2+
3+
import 'web_socket_stub.dart' as ws
4+
if (dart.library.html) 'web_socket_html.dart'
5+
if (dart.library.io) 'web_socket_io.dart';
6+
7+
WebSocketChannel constructWebSocketChannel(Uri uri,
8+
{Iterable<String>? protocols, Duration? pingInterval}) {
9+
return ws.constructWebSocketChannel(uri,
10+
protocols: protocols, pingInterval: pingInterval);
11+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import 'package:web_socket_channel/html.dart';
2+
import 'package:web_socket_channel/web_socket_channel.dart';
3+
4+
WebSocketChannel constructWebSocketChannel(Uri url,
5+
{Iterable<String>? protocols, Duration? pingInterval}) {
6+
return HtmlWebSocketChannel.connect(url, protocols: protocols);
7+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import 'package:web_socket_channel/io.dart';
2+
import 'package:web_socket_channel/web_socket_channel.dart';
3+
4+
WebSocketChannel constructWebSocketChannel(Uri url,
5+
{Iterable<String>? protocols, Duration? pingInterval}) {
6+
return IOWebSocketChannel.connect(url,
7+
protocols: protocols, pingInterval: pingInterval);
8+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import 'package:web_socket_channel/web_socket_channel.dart';
2+
3+
WebSocketChannel constructWebSocketChannel(Uri uri,
4+
{Iterable<String>? protocols, Duration? pingInterval}) {
5+
throw UnsupportedError(
6+
'WebSocketChannel is not supported in this environment. Please use a different implementation.');
7+
}

0 commit comments

Comments
 (0)