これまでいくつかのangular2 websocket impelmentationsを使用していましたが、私たちはそれに満足していませんでした。だから私たちはRxJsで私たちの財産でそれをやってみることにしました。角度Websocket RxJS/WebSocketSubject
これが私たちの最初の試みである:
@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ご参考までに、私は既にこの解決策を見つけました。これは素晴らしいことです。このソリューションの問題は、Websocketを終了する際に常に問題があることです。このソリューションは、接続を閉じる際に再接続を行いますが、これは問題ありません。しかし、それは最初の接続のようなものであり、サーバー上で最初の接続は高価なものがたくさんあります。 接続がブラウザ側から決して閉じられない方が良いでしょう。 質問は、ブラウザがウェブソケットをクローズする理由は何ですか? –
websocketの独自の実装を行ったようですので、独自のソリューションを共有できますか? – BlackHoleGalaxy