Как отправлять сообщения WebSocketSubject только с клиента на сервер? - PullRequest
0 голосов
/ 25 апреля 2018

Я создал наблюдаемый для моего подключения к веб-сокету, используя WebSocketSubject из rxjs. Пока все хорошо, сервер-клиент работает. Теперь дело в том, что я не могу различить происхождение сообщения в моем клиенте. Я отправляю сообщения, вызывая next () по теме. Все подписки на клиенте тоже получают эти сообщения. Как я могу вместо этого отправлять сообщения только на сервер?

Реализация в основном проистекает из этой статьи: https://medium.com/factory-mind/angular-websocket-node-31f421c753ff

Мой код:

socket$: WebSocketSubject<any>;

constructor() {
  this.socket$ = WebSocketSubject.create(SOCKET_URL);

  this.socket$.subscribe(
    (message) => console.log('<-- ' + message),
    (err) => console.error('Error on WebSocket:', err),
    () => console.warn('Completed!')
   );
}

send(message: SocketMessage) {
  const tmp: any = {};
  tmp.type = message.type;
  tmp.payload = message.payload;
  // This will be received by the server but also by client subscriptions = bad
  this.socket$.next(JSON.stringify(tmp));
}

1 Ответ

0 голосов
/ 29 мая 2019

Я нашел решение, которое пытается описать ваше поведение:

В документации WebSocket RxJS6 говорится, что

Вызов next не влияет на абонентов WebSocketSubject - у них нет информации о том, что что-то было отправлено на сервер (если, конечно, сервер как-то отвечает на сообщение).

Таким образом, при использовании RxJS 6 вместо RxJS 5 у вас не должно быть описанного поведения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...