大佬教程收集整理的这篇文章主要介绍了如何在角度5的一定时间后防止websocket关闭?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我使用的代码片段
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); } }
您可以按如下方式每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,请注明来意。