微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法运行 RSocketResumableTransport

如何解决无法运行 RSocketResumableTransport

我想让我的客户端重新连接到我的服务器,以防服务器重新启动。我因此尝试了 rsocket-js/packages/rsocket-examples/src/ResumeExample.js 中提供的示例。然而,似乎即使在重新启动服务器之后,也不会对 resumableTransport.connect() 进行回调。在 onNext 块内客户端的 resumableTransport.connectionStatus().subscribe() 中没有捕获任何内容。为了记录,这是我的一段代码

rSocketClient: RSocketClient<any,encodable>;  
responder;

ngOnInit(): void {
    const messageReceiver = payload => {
      console.log(payload);
    };
    this.responder = new EchoResponder(messageReceiver);
    
    const resumetoken = Buffer.from('helloworld');
    const bufferSize = 128;
    const sessionDurationSeconds = 20;
    const reconnectIntervalMillis = 5000;
    
    // Create an instance of a client
    const resumableTransport = new RSocketResumableTransport(
      // supplier of low-level transport
      () => new RSocketTcpClient({host: 'localhost',port: 7000},BufferEncoders),{
        bufferSize,// max number of sent & pending frames to buffer before failing
        resumetoken,// unique identifier the session across connections
        sessionDurationSeconds,},BufferEncoders,);
    
    this.authenticationService.getLoggedInUser().subscribe(
      obj => {
        this.authToken = obj.principal;
        this.rSocketClient = new RSocketClient({
          serializers: {
            data: JsonSerializer,Metadata: IdentitySerializer
          },setup: {
            payload: {
              data: this.authToken,Metadata: String.fromCharCode('client-id'.length) + 'client-id'
            },// ms btw sending keepalive to server
            keepAlive: 1000,// ms timeout if no keepalive response
            lifetime: 10000,// format of `data`
            dataMimeType: 'application/json',// application/json
            // format of `Metadata`
            MetadataMimeType: 'message/x.rsocket.routing.v0',// message/x.rsocket.routing.v0
          },responder: this.responder,transport: resumableTransport,});
        
        let start = true;
        resumableTransport.connectionStatus().subscribe({
          onNext: status => {
            console.log('Resumable transport status changed: ' + status.kind);

            if (status.kind === 'NOT_CONNECTED') {
              if (!start) {
                console.log('Resumable transport disconnected,retrying...');
                setTimeout(() => resumableTransport.connect(),reconnectIntervalMillis);
              } else {
                start = false;
              }
            }
          },onSubscribe: subscription => {
            subscription.request(Number.MAX_SAFE_INTEGER);
          },});
      
        this.rSocketClient.connect().subscribe({
          onComplete: socket => {
            console.log('Connection successful');
          },onError: error => console.error(error)
        });
      },error => { console.log(error); }
    );
  }

有人可以帮我解决这个问题,或者确认他在他的机器上运行了这个代码片段。谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。