RSocket-JS + RSocketResumableTransport不起作用

问题描述

RSocketResumableTransport似乎不起作用。我在下面的代码中使用RSocketResumableTransport,但它从未连接到服务器(spring-boot版本2.4.0-M1)。我正在使用rsocket-websocket-client“:” 0.0.19“版本。以下是用于连接的类:

import { Injectable } from '@angular/core';
import { IdentitySerializer,JsonSerializer,RSocket,RSocketClient,RSocketResumableTransport } from 'rsocket-core';
import RSocketWebSocketClient from 'rsocket-websocket-client';

@Injectable({ providedIn: 'root' })
export class RSocketResumableConnector {
    private client: RSocketClient;
    private rsocket: RSocket;

    constructor() {
        console.log('RSocketResumableConnector loaded...');
        this.createConnection();
    }

    public createConnection() {
        const resumetoken = Buffer.from('tweet.all');
        const bufferSize = 128;
        const sessionDurationSeconds = 20;

        const resumableTransport = new RSocketResumableTransport(
            () =>
                new RSocketWebSocketClient({
                    url: 'ws://localhost:7000/tweetsocket',}),{
                bufferSize,// max number of sent & pending frames to buffer before failing
                resumetoken,// unique identifier the session across connections
                sessionDurationSeconds,}
        );

        // Create an instance of a client
        this.client = new RSocketClient({
            // send/receive objects instead of strings/buffers
            serializers: {
                data: JsonSerializer,Metadata: IdentitySerializer,},setup: {
                payload: {
                    data: 'angular-client',Metadata: String.fromCharCode('shell-client'.length) + 'shell-client',dataMimeType: 'application/json',MetadataMimeType: 'message/x.rsocket.routing.v0',keepAlive: 5000,lifetime: 60000,transport: resumableTransport,});

        // start 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());
                    } else {
                        start = false;
                    }
                }
            },onSubscribe: (resumeSubscription) => {
                resumeSubscription.request(Number.MAX_SAFE_INTEGER);
            },});

        setTimeout(() => {},30000000);

        // Now create a socket
        this.client.connect().subscribe({
            onComplete: (socket: RSocket) => {
                console.log('socket in created',socket);
                this.rsocket = socket;
            },onError: (error) => console.error('Connection has been refused due to',error),onSubscribe: (cancel) => {
                console.log('client subscription done..');
            },onNext: (data) => {
                console.log('data is',data);
            },});
    }

    public disconnectClient() {
        if (this.client !== undefined) {
            this.client.close();
        }
    }

    public getRSocket(): RSocket {
        return this.rsocket;
    }
}

下面是浏览器控制台中的连续错误。该错误一直持续到超时:

Resumable transport disconnected,retrying...
Resumable transport status changed: CONNECTING
Resumable transport status changed: NOT_CONNECTED
Resumable transport disconnected,retrying...

请让我知道我做错了什么吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)