我正在尝试使用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)
};
有人可以指出我,我在这里想念什么吗?
答案 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');
2。设置您的事件监听器
例如,在onopen上发送身份验证。
websocket.onopen = (event) => { websocket.send(JSON.stringify({'jwt': 'blaat'})) }
3。从事件中创建可观察的事件
您可以根据事件创建可观察对象,一旦订阅该事件,便会收到该事件。
import { fromEvent } from 'rxjs';
const observable$ = fromEvent(websocket, 'message'); // Receives message events once you subscribe to this observable.
答案 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)
);