handleClient method
Handles an incoming WebSocketContext, whose origin and protocol handleRequest has checked.
Implementation
Future<void> handleClient(WebSocketContext socket) async {
_clients.add(socket);
await handleConnect(socket);
_onConnection.add(socket);
socket.request.container?.registerSingleton<WebSocketContext>(socket);
void disconnected() {
if (!_clients.remove(socket)) return;
socket._markClosed();
_onDisconnect.add(socket);
}
socket.channel.stream.listen(
(data) {
_onData.add(data);
handleData(socket, data);
},
onDone: disconnected,
onError: (e) => disconnected(),
cancelOnError: true,
);
}