Angular создает множество сокетов с помощью socket.io - PullRequest
0 голосов
/ 22 ноября 2018

Я пишу nodejs, угловое клиент-серверное приложение, которое использует сокетные соединения. Когда я на домашней странице или следующей странице, то это создает один сокет и работает правильно, когда я иду на 2 уровня глубже (маршрутизация), он генерирует несколько сокетов,Я использую пространство имен, так как на каждой странице мне нужно различное сокетное соединение, основанное на разных объектах запроса.

Это код для создания сокетного клиента в угловом приложении

import { Injectable } from '@angular/core';
import * as io from 'socket.io-client';
import { Observable } from 'rxjs/Observable';
import { Config } from '../config/env.config';
import { SocketConfig } from '../config/socket.config';   

@Injectable()
export class SocketService {

public host: string = Config.HOST;  

/**
 * * Creates a new SocketService
 */

initHomeSocket() {
    return io(this.host + SocketConfig.HOME);
}

initDashBoardSocket(dashboardId: string) {
    const query = 'dashboardId=' + dashboardId;
    return io(this.host + SocketConfig.DASHBOARD, 
this.setOptions(query));
}

 initDabaseSocket(dbId: string, queryId: string) {
    const query = 'queryId=' + queryId + SocketConfig.KEYJOIN + 
queryId;
    return io(this.host + SocketConfig.DATABASE, 
this.setOptions(query));        
}


 getSocketEmit(emitEvent: string, socket: SocketIOClient.Socket) {
    const observable = new Observable(observer => {
        socket.on(emitEvent, (data: any) => {
            observer.next(data);
        });
        return () => {
            socket.disconnect();
        };
    });
    return observable;
}

setOptions(queryString: string) {
    return { 'secure': SocketConfig.SECURE, 'reconnection': 
   SocketConfig.RECONNECT, 'reconnectionDelay': 
  SocketConfig.RECONNECT_DELAY, 'reconnectionDelayMax': 
  SocketConfig.RECONNECT_DELAYMAX, 'reconnectionAttempts': 
  SocketConfig.RECONNECT_ATTEMPTS, transport: SocketConfig.TRANSPORT, 
  query: queryString };
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...