handleClient method

Future<void> handleClient(
  1. WebSocketContext socket
)

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,
  );
}