WebSocketSubject无法正常运行

时间:2018-07-16 14:50:43

标签: angular websocket rxjs

我正在尝试使用php客户端通过angular连接websocket后端。 我正在尝试使用WebSocketSubject中的rxjs,但是由于某种原因我无法建立连接。

此代码不起作用

this.socket$ = WebSocketSubject.create('ws://localhost:12345/websockets.php');

this.socket$
   .subscribe(
       (message) => { 
             console.log(message);
        },
       (err) => console.error(err)
);

我在控制台上也没有收到任何错误。

我已经使用ES6 WebSocket进行了测试,效果很好。因此,服务器没有问题。反应很好。

此代码有效:

var host = 'ws://localhost:12345/websockets.php';
var socket = new WebSocket(host);
socket.onmessage = function(e) {
    console.log(e.data)
};

有人可以指出我,我在这里想念什么吗?

3 个答案:

答案 0 :(得分:2)

rxjs界面略有更改。实例化xlsName更改的位置:

editFolder

收件人:

WebSocketSubject

将消息发送到服务器的位置更改了

this.webSocketSubject = WebSocketSubject.create(...);

收件人:

this.webSocketSubject = new WebSocketSubject(...);

答案 1 :(得分:1)

您应该使用fromEvent方法创建一个可观察对象,该对象可以从rxjs导入。

1。创建websocket

创建一个新的WebSocket('withyoururl'):

const websocket = new WebSocket('ws://localhost:12345/websockets.php');

Websocket documentation

2。设置您的事件监听器

例如,在onopen上发送身份验证。

websocket.onopen = (event) => { websocket.send(JSON.stringify({'jwt': 'blaat'})) }

Listeners

3。从事件中创建可观察的事件

您可以根据事件创建可观察对象,一旦订阅该事件,便会收到该事件。

import { fromEvent } from 'rxjs';

const observable$ = fromEvent(websocket, 'message'); // Receives message events once you subscribe to this observable.

Creation of observable from an event

答案 2 :(得分:1)

要基于websocket创建流,可以使用websocket函数(!):

import { webSocket } from 'rxjs/webSocket';     

this.socket$ = websocket('ws://localhost:12345/websockets.php');

this.socket$
  .subscribe(
     (message) => { 
           console.log(message);
      },
     (err) => console.error(err)
);