Line data Source code
1 : part of '../worker.dart';
2 :
3 1 : Worker _buildWebSocket({
4 : required String url,
5 : List<String> messages = const [],
6 : Map<String, String> headers = const {},
7 : int timeoutSeconds = 30,
8 : int receiveMessages = 1,
9 : String? storeResponseAt,
10 : int? pingIntervalSeconds,
11 : }) {
12 1 : if (url.isEmpty) {
13 1 : throw ArgumentError('url cannot be empty for webSocket');
14 : }
15 1 : final uri = Uri.tryParse(url);
16 4 : if (uri == null || (uri.scheme != 'ws' && uri.scheme != 'wss')) {
17 1 : throw ArgumentError(
18 1 : 'Invalid WebSocket URL: "$url". Must start with ws:// or wss://',
19 : );
20 : }
21 1 : if (timeoutSeconds <= 0) {
22 2 : throw ArgumentError('timeoutSeconds must be > 0, got $timeoutSeconds');
23 : }
24 1 : if (receiveMessages < 0) {
25 2 : throw ArgumentError('receiveMessages must be >= 0, got $receiveMessages');
26 : }
27 1 : return WebSocketWorker(
28 : url: url,
29 : messages: messages,
30 : headers: headers,
31 : timeoutSeconds: timeoutSeconds,
32 : receiveMessages: receiveMessages,
33 : storeResponseAt: storeResponseAt,
34 : pingIntervalSeconds: pingIntervalSeconds,
35 : );
36 : }
|