start method
Start listening for WebSocket connections.
Implementation
Future<void> start() async {
_httpServer = await HttpServer.bind(host, port);
_wsController = StreamController<WebSocketChannel>();
_httpServer!.listen((request) {
if (WebSocketTransformer.isUpgradeRequest(request)) {
WebSocketTransformer.upgrade(request).then(
(socket) {
final channel = _WebSocketAdapter(socket);
_wsController!.add(channel);
},
// A failed client upgrade is noteworthy but not fatal: log it and
// keep serving. Logged to stderr rather than `controller` because the
// controller is the collected-records pipeline, not a server diagnostic.
onError: (Object error) {
stderr.writeln(
'LogCollectorServer: WebSocket upgrade failed: $error',
);
},
);
} else {
request.response
..statusCode = HttpStatus.badRequest
..write('WebSocket upgrade required')
..close();
}
});
_rpcServer = RpcWebSocketServer(
connections: _wsController!.stream,
onEndpointCreated: _onEndpointCreated,
);
await _rpcServer!.start();
}