在過去,我們使用了幾個angular2 websocket,但是我們對它們並不滿意,使用它們有幾個問題。所以我們決定嘗試用我們自己的RxJs來做我們的財富。Angular Websocket RxJS/WebSocket主題
這是我們第一次嘗試:
@Injectable()
export class WebSocketService{
public createWebsocket(url: string): Subject<MessageEvent> {
let socket = new WebSocket(url);
let observable = Observable.create(
(observer: Observer<MessageEvent>) => {
socket.onmessage = observer.next.bind(observer);
socket.onerror = observer.error.bind(observer);
socket.onclose = observer.complete.bind(observer);
return socket.close.bind(socket);
});
let observer = {
next: (data: Object) => {
if (socket.readyState === WebSocket.OPEN) {
socket.send(JSON.stringify(data));
}
}
};
return Subject.create(observer, observable);
}
}
插座被打開,工作了一段時間好。幾秒鐘後,瀏覽器關閉套接字,並在服務器端收到關閉事件。
這是封閉的原因,我們得到服務器站點: [1006] WebSocket的閱讀EOF
有誰可以幫忙嗎?還是有人知道如何使用WebSocketSubject?
https://gearheart.io/blog/auto-websocket-reconnection-with-rxjs/ –
@JuliaPassynkova thanx爲您的鏈接,我已經找到了這個解決方案,這很好。這個解決方案的問題是,總是存在關閉Websocket的問題,這個解決方案在關閉連接時沒有問題。但它就像是第一次連接,在服務器上,第一次連接會花費很多昂貴的東西。 因此,如果連接永遠不會從瀏覽器端關閉,那將會更好。 所以問題是,爲什麼瀏覽器正在關閉websocket? –
由於您似乎已經完成了您自己的websocket實現,請您分享一下您自己的解決方案嗎? – BlackHoleGalaxy