disconnect method
Closes the WebSocket connection gracefully
Implementation
Future<void> disconnect() async {
await _channel?.sink.close(status.normalClosure);
_channel = null;
_setConnectionState(WebSocketConnectionState.disconnected);
// Reset session ID for fresh connections
_currentSessionId = null;
}