AngularWebsocket在调用send()后立即关闭。
创始人
2024-10-29 22:30:24
0

此问题可能是由于在Angular应用程序中使用Websocket时使用了RxJS的Subject而引起的。在Websocket的observable中使用Subject时,它可能会在执行一次完整的数据发送过程后立即关闭。

为了解决这个问题,需要在引用Subject时加上share()操作符,这将使得Subject可否缓存数据并在所有订阅者之间共享。

以下是更详细的例子:

import { Injectable } from '@angular/core'; import { Observable, Observer, Subject } from 'rxjs'; import { share } from 'rxjs/operators'; import { environment } from 'environments/environment';

@Injectable() export class SocketService { // 缓存Subject public messages: Subject;

// 获取WebSocket的URl public initWebSocket(): void { const socketUrl: string = environment.wsUrl; this.messages = this.createWebSocketObserver(socketUrl).pipe(share()) as Subject; }

// 创建一个Websocket的可观察对象 private createWebSocketObserver(url: string): Observable { return new Observable((observer: Observer) => { const socket = new WebSocket(url);

  socket.onmessage = (event) => observer.next(event);
  socket.onerror = (event) => observer.error(event);
  socket.onclose = (event) => observer.complete();

  // 返回Subscription以确保在不需要时执行清理操作
  return () => socket.close();
});

} }

希望这可以帮助你解决这个问题!

相关内容

热门资讯

据文件显示!科米台州麻将辅助,... 据文件显示!科米台州麻将辅助,真是有挂辅助app(竟然有挂)-哔哩哔哩1、每一步都需要思考,不同水平...
今天上午!赣湘互娱挂,总是是有... 今天上午!赣湘互娱挂,总是是有辅助修改器(有挂详情)-哔哩哔哩1、在赣湘互娱挂插件功能辅助器技巧中,...
来临!广西友乐解码器辅助器,原... 来临!广西友乐解码器辅助器,原来真的是有辅助脚本(真的有挂)-哔哩哔哩1.广西友乐解码器辅助器 选牌...
来临!新天道辅助脚本,确实有挂... 来临!新天道辅助脚本,确实有挂辅助下载(有挂秘诀)-哔哩哔哩1、金币登录送、破产送、升级送、活动送。...
近期!青橙竞技卡五星辅助,好像... 近期!青橙竞技卡五星辅助,好像真的是有辅助脚本(竟然有挂)-哔哩哔哩1、用户打开应用后不用登录就可以...
据相关数据显示!小程序微乐游戏... 据相关数据显示!小程序微乐游戏辅助,原来真的有辅助挂(有挂实锤)-哔哩哔哩该软件可以轻松地帮助玩家将...
据统计!人皇大厅控制牌型,竟然... 据统计!人皇大厅控制牌型,竟然有挂辅助平台(有挂实锤)-哔哩哔哩1、人皇大厅控制牌型辅助软件下载优化...
现场直击!打哈儿辅助,竟然是有... 现场直击!打哈儿辅助,竟然是有辅助平台(有挂实锤)-哔哩哔哩1)打哈儿辅助辅助插件:进一步探索打哈儿...
此事引发广泛关注!同乡游有辅助... 此事引发广泛关注!同乡游有辅助软件吗,确实存在有辅助app(有挂技巧)-哔哩哔哩1.同乡游有辅助软件...
反观!玉海楼辅助器,好像存在有... 反观!玉海楼辅助器,好像存在有辅助软件(有挂辅助)-哔哩哔哩1.玉海楼辅助器 选牌创建新账号,点击进...