Клиент Socket.io: как иметь несколько пространств имен в Angular - PullRequest
0 голосов
/ 26 мая 2020

Я видел этот вопрос и ответ , но он не отвечает на мой вопрос.

Я использую socket-io.client с angular. У меня нет проблем с моей серверной реализацией socket.io. Мой вопрос: как правильно реализовать несколько пространств имен во внешнем интерфейсе при использовании socket.io и angular?

Вот мой пример кода: { ссылка }

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

@Injectable({
  providedIn: 'root'
})
export class SocketIOService {
  private socket:SocketIOClient.Socket; 
  // I know by using multiple of the service above I can use multiple namespaces 
  // by passing the namespaces in the constructor. Will doing that create multiple 
  // instances of socket.io? Is that the best way to implement it?

  constructor() {
    this.socket = io(/*If I place the namespace here it works*/);
    // It I place the namespace as shown above it works. But how can I have multiple namespaces by doing that?
  }

  joinRoom(room) {
    this.socket.nsp = "/b" //<--- Doing this does not work
    this.socket.emit('join', room);
  }

}

Я прочитал здесь , что Объединение нескольких пространств имен не поддерживается. , но это касается socket.io-swift. Это так в socket.ioClient с angular?

Как я могу реализовать несколько пространств имен? Должен ли я использовать несколько служб socket:SocketIOClient.Socket; или есть другой способ?

...