-
Notifications
You must be signed in to change notification settings - Fork 100
Open
Labels
needs triageIssue/PR needs triage by a project maintainerIssue/PR needs triage by a project maintainer
Description
Expected Behavior
client -> .requestChannel
server -> receives .requestChannel
server -> sends message 1
client -> receives message 1
client -> sends message 2
server -> receives message 2
Actual Behavior
client -> .requestChannel
client -> sends message 1
server -> receives .requestChannel
Possible Solution
This looks intentional, there is some extra logic to do this in the code but I don't know why it is done this way. Receiving message before sending them sounds like a perfectly valid use case for me.
rsocket-js/packages/rsocket-adapter-rxjs/src/Requesters.ts
Lines 133 to 159 in c6d6c47
| const [firstValueObservable, restValuestObservable] = partition( | |
| datas.pipe( | |
| share({ | |
| connector: () => new Subject(), | |
| resetOnRefCountZero: true, | |
| }) | |
| ), | |
| (_value, index) => index === 0 | |
| ); | |
| return ( | |
| rsocket: RSocket, | |
| metadata: Map<string | number | WellKnownMimeType, Buffer> | |
| ) => | |
| firstValueObservable.pipe( | |
| take(1), | |
| concatMap( | |
| (firstValue) => | |
| new Observer2BufferingSubscriberToPublisher2PrefetchingObservable( | |
| ( | |
| s: OnTerminalSubscriber & | |
| OnNextSubscriber & | |
| OnExtensionSubscriber & | |
| Requestable & | |
| Cancellable | |
| ) => | |
| rsocket.requestChannel( |
Why is this done? Wouldnt be better to subscribe right away, even if there is no initial payload?
- RSocket version(s) used:
"rsocket-adapter-rxjs": "1.0.0-alpha.2",
"rsocket-core": "1.0.0-alpha.1",
Metadata
Metadata
Assignees
Labels
needs triageIssue/PR needs triage by a project maintainerIssue/PR needs triage by a project maintainer