Observable - 随着时间的推移 - 是一个有用的东西,能够通过网络请求。 Feed最好建模为Observable,而不是必须轮询和差异请求的静态数组。
我的问题 - 如果我想创建一个可以让你做的网络端点
web-tail -f http://somewhere.com/biz-quotes
这个由虚构的实用程序web-tail
查询的服务每隔5秒就会返回一个像“自定义部门协同作用”这样的精简商业报价。我可以用WebSockets编写这样一个web-tail
实用程序,并建立一个约定,用于将发射对象的哪个字段发送到控制台。但是我会用什么语言编写耗材规范呢?
Observable规范是否足够成熟以供引用?
答案 0 :(得分:1)
如果您的目标是编写一个消费服务器通过websockets发送的消息的客户端,您肯定可以使用 RxJs ,例如 socket.io 。
This nice article向您解释这是如何运作的。
简而言之,这是您需要的TypeScript代码。
import { Observable } from 'rxjs';
import { Subject } from 'rxjs';
import { Observer } from 'rxjs';
import * as socketIoClient from 'socket.io-client';
export class SocketObs {
private socket: SocketIOClient.Socket;
private connect = new Subject<any>();
private disconnect = new Subject<any>();
constructor(url: string);
constructor(input: any) {
this.socket = socketIoClient(input);
this.socket.on('connect',
() => {
this.connect.next();
// complete to make sure that this event is fired only once
this.connect.complete();
}
);
this.socket.on('disconnect',
() => {
this.disconnect.next();
// complete to make sure that this event is fired only once
this.disconnect.complete();
}
);
}
send(event, message?) {
this.socket.emit(event, message);
}
onEvent(event): Observable<any> {
return new Observable<any>((observer: Observer<any>) => {
this.socket.on(event, data => observer.next(data));
});
}
onDisconnect() {
return this.disconnect.asObservable();
}
onConnect() {
return this.connect.asObservable();
}
close() {
this.socket.close();
}
}
SocketObs类以Observable的形式为您提供所需的API,特别是onEvent
返回一个Observable,它会在从服务器收到某个事件时发出。