0

我的要求是,当服务器上发生某些事件时,它应该将更新推送到客户端。想使用 RSocket 而不是 SSE。
rsocket-js 客户端上配置的响应器会响应服务器请求吗?
如果是,那么应该如何将 rsocket-js 响应器配置为接受特定路由上的消息?那部分请澄清。
不确定我的春季服务是否正确。

我的 Webflux Spring Boot RSocket 服务器代码-

@Service  
@RequiredArgsConstructor  
public class RsocketService {  
    private final RSocketRequester rSocketRequester;  

    public void serverToClientRequest(){  

        Mono.just("Your request  is completed at "+ LocalDateTime.now())
           .delayElement(Duration.ofSeconds(ThreadLocalRandom.current().nextInt(5, 10)))   
           .flatMap(m -> rSocketRequester.route("request.stream").data(m).send())  
           .subscribe();
    }  
}  

我有一个控制器 -

@MessageMapping("request.stream")  
public Flux<String> requestStream(@Payload String requestData) {  
}  

客户端我正在使用来自 'rsocket-websocket-client' 的 RSocketWebSocketClient;

const client = new RSocketClient({   
  responder: new EchoResponder(),  
  transport: new RSocketWebSocketClient(  
    {
      url: 'ws://localhost:7000/rsocket',  
      wsCreator: (url: string) => new WebSocket(url),  
      debug: true,  
    }
  ),  
  setup: {  
    dataMimeType: "text/plain",
    metadataMimeType: 'message/x.rsocket.routing.v0',
    keepAlive: 600000,
    lifetime: 180000,
  }
});

我的 reactjs 组件-

async componentDidMount() {  
    const rsocket= await client.connect();  
    console.log('rsocket client connected');  
     rsocket
            .requestStream({
              data: "client message",
              metadata: String.fromCharCode('request.stream'.length) + 'request.stream'
            })
            .subscribe({
              onComplete: () => {
                console.log("request stream completed");

              },
              onNext: value => {
                console.log("on next-->got data from sever");
                console.log(value.data);
              },
              onError: (error: any) => {
                console.log("got error with requestResponse");
                console.error(error);
              },
              onSubscribe: sub => {
                console.log("subscribe request Stream!");
                sub.request(2147483647);
              }
            });
        }

EchoResponder 取自https://github.com/rsocket/rsocket-js/blob/master/packages/rsocket-examples/src/LeaseClientExample.js。但是响应者没有收到任何消息。任何帮助表示赞赏。

4

0 回答 0