close method
Closes the connection, optionally with a WebSocket code/reason.
Implementation
@override
Future<void> close([int? code, String? reason]) async {
if (!_open) return;
_open = false;
await _channel.sink.close(code, reason);
_handleClosed();
}