Использование веб-сокета в углу 6 - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь получить данные из веб-сокета. Я инициализирую объект websocket как глобальный.

socket =new WebSocket('ws://xx.xx.xx.xx:xxxx/socket');

на ngOnInit Я открываю соединение с:

this.socket.onopen = function(){
    console.log("websocket is open now");
  }

Теперь мне нужно отправить сообщение с помощью функции, которую я запускаю из пользовательского интерфейса, а ответ из websocket должен сохранить сообщение в глобальной переменной.

sampleFunction(val) {
    this.socket.send(val);
    this.socket.onmessage=function(event){
      console.log("got message");
      this.dummy=event.data;
    }.bind(this)
  }

Таким образом, при загрузке страницы он подключается, но когда я запускаю функцию, сообщение не отправляется, и поэтому я не получаю никакого ответа обратно

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Я полагаю, что сокеты RxJ ожидают, что полезная нагрузка будет действительным json, отправляете ли вы строку или?

0 голосов
/ 28 марта 2019

Я использую rxjs, который поставляется вместе с Angular и его методом webSocket.

import {webSocket} from 'rxjs/webSocket';
socket = webSocket(`${environment.serviceWebSockets}/api`);
constructor(){
    // now you can subscribe to messages wherever in your code
    this.socket.subscribe(message => {
        console.log(message); // or just use it directly
    }, error => {
        console.error(error); // handle errors
    });
}

для отправки данных через этот webSocket:

socket.next(JSON.stringify({some:"data"}));

для подключения:

socket.subscribe();

для отключения:

socket.complete();

подробнее о https://rxjs -dev.firebaseapp.com / api / webSocket / webSocket

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