don't expose close
diff --git a/pkgs/sse/lib/server/sse_handler.dart b/pkgs/sse/lib/server/sse_handler.dart index 0c06a14..969ef9b 100644 --- a/pkgs/sse/lib/server/sse_handler.dart +++ b/pkgs/sse/lib/server/sse_handler.dart
@@ -21,17 +21,17 @@ /// A bi-directional SSE connection between server and browser. class SseConnection extends StreamChannelMixin<String> { - // Incoming messages from the Browser client. + /// Incoming messages from the Browser client. final _incomingController = StreamController<String>(); - // Outgoing messages to the Browser client. + + /// Outgoing messages to the Browser client. final _outgoingController = StreamController<String>(); final Sink _sink; - final String _clientId; final _closedCompleter = Completer<void>(); - SseConnection(this._sink, this._clientId) { + SseConnection(this._sink) { _outgoingController.stream.listen((data) { if (!_closedCompleter.isCompleted) { // JSON encode the message to escape new lines. @@ -75,7 +75,6 @@ final _connections = <String, SseConnection>{}; final _connectionController = StreamController<SseConnection>(); - var _isClosed = false; StreamQueue<SseConnection> _connectionsStream; SseHandler(this._uri); @@ -87,22 +86,12 @@ int get numberOfClients => _connections.length; - void close() { - _isClosed = true; - if (!_connectionController.isClosed) _connectionController.close(); - for (var connection in _connections.values.toList()) { - connection.sink.close(); - _connections.remove(connection._clientId); - } - } - shelf.Response _createSseConnection(shelf.Request req, String path) { - if (_isClosed) return shelf.Response.notFound(''); req.hijack((channel) async { var sink = utf8.encoder.startChunkedConversion(channel.sink); sink.add(_sseHeaders(req.headers['origin'])); var clientId = req.url.queryParameters['sseClientId']; - var connection = SseConnection(sink, clientId); + var connection = SseConnection(sink); _connections[clientId] = connection; unawaited(connection._closedCompleter.future.then((_) { _connections.remove(clientId);
diff --git a/pkgs/sse/test/sse_test.dart b/pkgs/sse/test/sse_test.dart index 9e52424..16a9a0c 100644 --- a/pkgs/sse/test/sse_test.dart +++ b/pkgs/sse/test/sse_test.dart
@@ -119,33 +119,6 @@ expect(handler.numberOfClients, 0); }); - test('Can close the handler which closes the connections', () async { - expect(handler.numberOfClients, 0); - await webdriver.get('http://localhost:${server.port}'); - var connection = await handler.connections.next; - expect(handler.numberOfClients, 1); - - handler.close(); - // Should complete since the connection is closed. - await connection.stream.toList(); - expect(handler.numberOfClients, 0); - }); - - test('Closing the handler prevents new connections', () async { - expect(handler.numberOfClients, 0); - await webdriver.get('http://localhost:${server.port}'); - var connection = await handler.connections.next; - expect(handler.numberOfClients, 1); - - handler.close(); - // Should complete since the connection is closed. - await connection.stream.toList(); - assert(handler.numberOfClients == 0); - - await webdriver.get('http://localhost:${server.port}'); - expect(await handler.connections.hasNext, isFalse); - }); - test('Disconnects when navigating away', () async { await webdriver.get('http://localhost:${server.port}'); expect(handler.numberOfClients, 1);