RxJS.fromWebSocket 和 Socket.io
RxJS.fromWebSocket with Socket.io
我正在尝试使用 Rx.DOM.fromWebSocket 和 Socket.io 创建主题。我真的迷路了 - 我在哪里可以找到 Socket.io 实现的协议?
var rxSocket = Rx.DOM.fromWebSocket(
'ws://localhost:12345',
'ws',
function (e) {
console.log('Opening');
});
rxSocket.subscribe(function (next) {
console.log('Received data: ' + next);
});
rxSocket.onNext('data');
这就是我现在得到的。我正在尝试在本地连接到运行 Socket.io 的服务器。当我刚刚使用标准 io.connect()
时,一切运行顺利,所以我的服务器已启动并运行 Socket.io。我试过 Google 但不知道在哪里可以找到 Socket.io.
的套接字协议实现
Socket.io 不提供 websockets,它提供 'websockets',websockets 如果可用但回退,即使它建立了 websocket 连接它也不会发送 rxSocket 的那种消息去期待。如果你想使用 Rx.DOM.fromWebSocket 你应该简单地使用 ws 模块。
所以选项:
- RX.DOM.formWebSocket + ws(仅支持真正的 websockets,但让事情变得美好)
- socket.io + hacks(完整的浏览器/'helpful'代理支持,但笨拙)
另一种方法是使用 RxJS Observable.fromEvent。
var socket = io('ws://localhost:8080');
var dataStream = Rx.Observable.fromEvent(socket, 'data');
dataStream.subscribe(function(payload) {
console.log(payload);
});
在此示例中,允许 socket.io 处理连接。
RxJs 处理事件并创建一个 Observable 流来订阅。
无耻的自我推销,我知道,但我 rxjs-socket.io 正是为了这个目的。有了它,您真正需要做的就是:
import {IO, ioEvent} from 'rxjs-socket.io'
const socket = new IO();
const onHelloWorld = new ioEvent({name: "hello-world", once: false, count: 0});
socket.listenToEvent(onHelloWorld);
socket.connect('http://localhost:1337');
onHelloWorld.event$.subscribe((state) => {
console.log('new state', state);
});
我正在尝试使用 Rx.DOM.fromWebSocket 和 Socket.io 创建主题。我真的迷路了 - 我在哪里可以找到 Socket.io 实现的协议?
var rxSocket = Rx.DOM.fromWebSocket(
'ws://localhost:12345',
'ws',
function (e) {
console.log('Opening');
});
rxSocket.subscribe(function (next) {
console.log('Received data: ' + next);
});
rxSocket.onNext('data');
这就是我现在得到的。我正在尝试在本地连接到运行 Socket.io 的服务器。当我刚刚使用标准 io.connect()
时,一切运行顺利,所以我的服务器已启动并运行 Socket.io。我试过 Google 但不知道在哪里可以找到 Socket.io.
Socket.io 不提供 websockets,它提供 'websockets',websockets 如果可用但回退,即使它建立了 websocket 连接它也不会发送 rxSocket 的那种消息去期待。如果你想使用 Rx.DOM.fromWebSocket 你应该简单地使用 ws 模块。
所以选项:
- RX.DOM.formWebSocket + ws(仅支持真正的 websockets,但让事情变得美好)
- socket.io + hacks(完整的浏览器/'helpful'代理支持,但笨拙)
另一种方法是使用 RxJS Observable.fromEvent。
var socket = io('ws://localhost:8080');
var dataStream = Rx.Observable.fromEvent(socket, 'data');
dataStream.subscribe(function(payload) {
console.log(payload);
});
在此示例中,允许 socket.io 处理连接。
RxJs 处理事件并创建一个 Observable 流来订阅。
无耻的自我推销,我知道,但我 rxjs-socket.io 正是为了这个目的。有了它,您真正需要做的就是:
import {IO, ioEvent} from 'rxjs-socket.io'
const socket = new IO();
const onHelloWorld = new ioEvent({name: "hello-world", once: false, count: 0});
socket.listenToEvent(onHelloWorld);
socket.connect('http://localhost:1337');
onHelloWorld.event$.subscribe((state) => {
console.log('new state', state);
});