rsocket / rsocket-dart

Dart implementation of RSocket
Apache License 2.0
31 stars 25 forks source link

Incorrect FrameType for handling RequestStream Frame. #25

Open DXTkastb opened 1 year ago

DXTkastb commented 1 year ago

Expected Behavior

Should receive message stream from dart client

Actual Behavior

Received error :

type 'RequestFNFFrame' is not a subtype of type 'RequestStreamFrame' in type cast
#0      RSocketRequester.receiveFrame (package:rsocket/core/rsocket_requester.dart:290:40)
#1      RSocketRequester.receiveChunk (package:rsocket/core/rsocket_requester.dart:205:9)

Steps to Reproduce

Dart Client (Responder) :

List<int> list = 'this is client response!'.codeUnits;
Uint8List data = Uint8List.fromList(list);

RSocketConnector connector = RSocketConnector.create().acceptor(requestStreamAcceptor((payload) {
    List<Payload> randomPayloadList = [Payload.from(null, data)];
        return Stream.fromIterable(randomPayloadList);
}));

var rsocket = await connector.connect("ws://localhost:7000/rsocket");

Spring Server (Requester):

 rsocketRequester.route("").data("this is server reqeust!")
                .retrieveFlux(String.class).subscribe((v) -> {
                   System.out.println(v);
             });

Possible Solution

https://github.com/rsocket/rsocket-dart/blob/f31cc6e24f4a3cfda711f459e8cb78b446a62245/lib/frame/frame.dart#L40-L42

should be replaced with :

    case frame_types.REQUEST_STREAM:
      frame = RequestStreamFrame.fromBuffer(header, byteBuffer);  // correct frame
      break;