receive method

  1. @override
Stream<AbstractMessage> receive()
override

Implementation

@override
Stream<AbstractMessage> receive() {
  final socket = _socket!;
  final onDisconnect = _onDisconnect!;
  final onConnectionLost = _onConnectionLost!;
  socket.done.then(
    (done) {
      if (!_goodbyeSent &&
          !_goodbyeReceived &&
          !onDisconnect.isCompleted &&
          !onConnectionLost.isCompleted) {
        onConnectionLost.complete();
      } else if (!onDisconnect.isCompleted) {
        onDisconnect.complete();
      }
    },
    onError: (error) {
      if (!_goodbyeSent &&
          !_goodbyeReceived &&
          !onDisconnect.isCompleted &&
          !onConnectionLost.isCompleted) {
        onConnectionLost.complete(error);
      }
    },
  );
  // TODO set keep alive to true
  //_socket.setOption(RawSocketOption.fromBool(??, SO_KEEPALIVE, true), true)
  return socket.expand(_consumeInboundChunk);
}