connect method
Connect to the sessions WebSocket endpoint.
Implementation
Future<void> connect() async {
if (_state == WebSocketState.connecting) return;
_state = WebSocketState.connecting;
final url =
'$_baseWsUrl/v1/sessions/ws/$_sessionId/subscribe'
'?organization_uuid=$_orgUuid';
final accessToken = _getAccessToken();
final headers = <String, dynamic>{
'Authorization': 'Bearer $accessToken',
'anthropic-version': '2023-06-01',
};
try {
_ws = await WebSocket.connect(url, headers: headers);
_state = WebSocketState.connected;
_reconnectAttempts = 0;
_sessionNotFoundRetries = 0;
_startPingInterval();
_callbacks.onConnected?.call();
_wsSubscription = _ws!.listen(
(data) => _handleMessage(data is String ? data : data.toString()),
onDone: () => _handleClose(_ws?.closeCode ?? 1006),
onError: (Object error) {
_callbacks.onError?.call(error);
},
);
} catch (e) {
_callbacks.onError?.call(e);
_handleClose(1006); // abnormal closure
}
}