Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在角度5的一定时间后防止websocket关闭?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用’rxjs-websockets’来连接websockets.但经过一段时间(约2分钟)
连接关闭.在手动关闭之前,如何保持连接.

这是我使用的代码片段

constructor(private socketservice: WebSocketservicE) {}

this.socketservice.connect('/endpoint');
this.socketSubscription = this.socketservice.messages
      .subscribe(result => {            
            // perform operation
    });

这是WebSocketservice

import {InjectablE} from '@angular/core';
import {QueueingSubject} from 'queueing-subject';
import {ObservablE} from 'rxjs/Observable';
import websocketConnect from 'rxjs-websockets';
import 'rxjs/add/operator/share';
import 'rxjs/add/operator/retryWhen';
import 'rxjs/add/operator/delay';

@Injectable()
export class WebSocketservice {
  private inputStream: QueueingSubject<String>;
  public messages: Observable<String>;

  constructor() {    
  }

  public connect(socketUrl) {
      this.messages = websocketConnect(
        socketUrl,this.inputStream = new QueueingSubject<String>()
      ).messages.retryWhen(errors => errors.delay(1000))
        .map(message => JSON.parse(messagE))
        .share();
  }

  public send(message: String): void {
    this.inputStream.next(messagE);
  }
}

解决方法

Websockets通常在一些消息交换的帮助下长时间保持连接.
在我们的例子中,我们可以将其称为’ping => pong’,客户端发送消息’ping’,服务器可能会回复消息’pong’.

您可以按如下方式每30秒发送一次ping.

seTinterval(() => {
    this.socketservice.send('ping');
},30000);

当您将WebSocketservice收到的每条消息转换为JSON时,您必须进行这些更改
avaoid JSON解析错误.

export class WebSocketservice {
.
.
.

    public connect(socketUrl) {
      this.messages = websocketConnect(
        socketUrl,this.inputStream = new QueueingSubject<String>()
      ).messages.retryWhen(errors => errors.delay(1000))
        //parse messages except pong to avoid JSON parsing error
        .map(message => message === 'pong' ? message : JSON.parse(messagE))
        .share();
    }
.
.
.
}

大佬总结

以上是大佬教程为你收集整理的如何在角度5的一定时间后防止websocket关闭?全部内容,希望文章能够帮你解决如何在角度5的一定时间后防止websocket关闭?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。