• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

124
Views
Múltiples conexiones websocket con diferentes URL

Tengo un problema para conectarme simultáneamente a varios WebSockets con diferentes URL. Hasta ahora, utilicé los siguientes métodos para conectarme a un socket dado desde la URL (uno a la vez) o enviar un mensaje a uno y desconectarme inmediatamente después del método Send() , y luego crear uno nuevo. En este caso necesito escuchar algunos sockets (no predefinidos) y recibir mensajes a mi Asunto. Desafortunadamente, para crear cada enlace nuevo, tengo que proporcionar una nueva URL. ¿Cómo hacerlo para no perder conexiones anteriores y que todo se escuche en un Observable (Sujeto)?

Aquí tengo una función en la que primero necesito obtener datos en la matriz ( por lo que puede haber una cantidad diferente ), y luego abrir tantas conexiones como haya en la matriz:

componente.ts

 arrayIds = ['1abc', '2abc', '3abc'] // fetched data from API ... startConnecting() { this.arrayIds.forEach( id => { this.websocketService.connect(id).subscribe(); }); }

A continuación, tengo métodos en mi websocketService.service.ts :

websocketService.servicio.ts.ts

 export class WebsocketService implements OnDestroy{ connection$: WebSocketSubject<any>; RETRY_SECONDS = 10; constructor() { } connect(id: string): Observable<WebSocketSubject<any>> { return of(environment.WEBSOCKET_URL).pipe( filter(apiUrl => !!apiUrl), map(apiUrl => apiUrl + `/${id}/`), // here I need update new socket URL switchMap(wsUrl => { if (this.connection$) { return this.connection$; } else { this.connection$ = webSocket(wsUrl); return this.connection$; } }), retryWhen((errors) => errors.pipe(delay(this.RETRY_SECONDS))) ); } send(data): void { if (this.connection$) { this.connection$.next(data); } else { console.error('error'); } } closeConnection(): void { if (this.connection$) { this.connection$.complete(); this.connection$ = null; } } ngOnDestroy(): void { this.closeConnection(); } }

Entonces, en este ejemplo, necesito una conexión abierta con:

 1. ws://URL/1abc 2. ws://URL/2abc 3. ws://URL/3abc

y recibir mensajes de todos a un Observable si esto es posible?

almost 3 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error