ws method
Implementation
FlintWebSocketClient ws(
String path, {
Map<String, dynamic>? params,
Map<String, String>? headers,
bool sendTokenAsQuery = false,
String queryTokenKey = 'token',
AuthTokenProvider? tokenProvider,
}) {
if (baseUrl == null) {
throw FlintError(
'Base URL not set. WebSocket requests require a baseUrl.',
);
}
final mergedHeaders = <String, String>{...this.headers, ...?headers};
String? token;
String? authHeader;
for (final entry in mergedHeaders.entries) {
if (entry.key.toLowerCase() == 'authorization') {
authHeader = entry.value;
break;
}
}
if (authHeader != null && authHeader.startsWith('Bearer ')) {
token = authHeader.substring(7);
}
final normalizedBase = baseUrl!.endsWith('/')
? baseUrl!.substring(0, baseUrl!.length - 1)
: baseUrl!;
final normalizedPath = path.startsWith('/') ? path : '/$path';
final wsUrl = '$normalizedBase$normalizedPath'.replaceFirst(
RegExp(r'^http'),
'ws',
);
return FlintWebSocketClient(
wsUrl,
params: params,
token: token,
tokenProvider: tokenProvider,
debug: debug,
sendTokenAsQuery: sendTokenAsQuery,
queryTokenKey: queryTokenKey,
);
}