如何解决无法运行 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 举报,一经查实,本站将立刻删除。