Я использую эту библиотеку rxjs-websocket для обработки веб-сокетов в моем приложении. Когда я создаю сайт с помощью angular-cli и открываю его в браузере, я получаю сообщение об ошибке при получении сообщения с сервера:
ОШИБКА Ошибка на WebSocket.socket.onclose [as __zone_symbol__ON_PROPERTYclose]
Но когда я обновляю браузер, я не получаю сообщение об ошибке, и сообщения поступают в пользовательский интерфейс. Weird. Похоже, что браузер закрывает соединение, и обновление вызывает повторное соединение (с использованием Chrome). Вероятно, проблема с моим кодом:
жить-message.service.ts
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'
@Injectable()
export class LiveMessageService {
private inputStream: QueueingSubject<any>
public messages: Observable<any>
public connect() {
this.messages = websocketConnect(
'ws://www.dev.com:8080',
this.inputStream = new QueueingSubject<string>()
).messages.share()
}
public send(message: string):void {
this.inputStream.next(message)
}
}
MessageComponent.ts
import { Component, OnInit } from '@angular/core';
import { Subscription } from 'rxjs/Subscription'
import { JwtService, LiveMessageService } from '../services';
export class MessageComponent implements OnInit {
constructor(private liveMessageService: LiveMessageService,private jwtService: JwtService,) { }
public notifications;
public unreadNotifications: boolean;
public playerDetails;
public messageSubscribe: string = "SUBSCRIBE player.";
ngOnInit() {
if (this.jwtService.getPlayer()) {
this.playerDetails = (JSON.parse(this.jwtService.getPlayer()));
this.liveMessageService.connect();
this.liveMessageService.messages.subscribe((message) => {
this.notifications.push(message);
this.unreadNotifications = this.notifications
.filter(notification => notification.read == false).length;
})
// example message 'SUBSCRIBE player.10'
this.liveMessageService.send(this.messageSubscribe
+ this.playerDetails.id)
}
}
}
Кто-нибудь видел какие-либо проблемы там? Спасибо