WebSocketSubjectConfig
WebSocketSubjectConfig 是一个普通的对象,它使我们能够 webSocket 可配置。
interface WebSocketSubjectConfig<T> {
url: string
protocol?: string | Array<string>
resultSelector?: (e: MessageEvent) => T
serializer?: (value: T) => WebSocketMessage
deserializer?: (e: MessageEvent) => T
openObserver?: NextObserver<Event>
closeObserver?: NextObserver<CloseEvent>
closingObserver?: NextObserver<void>
WebSocketCtor?: {...}
binaryType?: 'blob' | 'arraybuffer'
}
描述
提供灵活性 webSocket
它定义了一组属性以提供特定的自定义行为 套接字生命周期的时刻。 连接打开后,我们可以 使用 openObserver
中,当连接关闭 closeObserver
,如果我们 有兴趣的监听数据从正在添加服务器: deserializer
, 这使我们可以在传递数据之前自定义数据的反序列化策略 到套接字客户端。 默认情况下 deserializer
将应用于 JSON.parse
每条消息 从服务器。
例
deserializer ,此属性的默认值为, JSON.parse
但由于只有两个选项 对于传入数据,可以是文本或二进制数据。 我们可以应用自定义反序列化策略 或只是简单地跳过默认行为。
import { webSocket } from 'rxjs/webSocket';
const wsSubject = webSocket({
url: 'ws://localhost:8081',
//Apply any transformation of your choice.
deserializer: ({data}) => data
});
wsSubject.subscribe(console.log);
// Let's suppose we have this on the Server: ws.send("This is a msg from the server")
//output
//
// This is a msg from the server
序列化程序 允许我们使用自定义序列化策略,但对于传出消息
import { webSocket } from 'rxjs/webSocket';
const wsSubject = webSocket({
url: 'ws://localhost:8081',
//Apply any transformation of your choice.
serializer: msg => JSON.stringify({channel: "webDevelopment", msg: msg})
});
wsSubject.subscribe(() => subject.next("msg to the server"));
// Let's suppose we have this on the Server: ws.send("This is a msg from the server")
//output
//
// {"channel":"webDevelopment","msg":"msg to the server"}
closeObserver 当出现错误时, 允许我们设置自定义错误。
import { webSocket } from 'rxjs/webSocket';
const wsSubject = webSocket({
url: 'ws://localhost:8081',
closeObserver: {
next(closeEvent) {
const customError = { code: 6666, reason: "Custom evil reason" }
console.log(`code: ${customError.code}, reason: ${customError.reason}`);
}
}
});
//output
// code: 6666, reason: Custom evil reason
openObserver ,假设我们需要先执行某种 init 任务,然后再将消息发送/接收到 webSocket 或发送连接成功的通知,这是在 openObserver 适用于。
import { webSocket } from 'rxjs/webSocket';
const wsSubject = webSocket({
url: 'ws://localhost:8081',
openObserver: {
next: () => {
console.log('connetion ok');
}
},
});
//output
// connetion ok`
物产
属性 | 类型 | 描述 |
---|---|---|
url | string |
要连接的套接字服务器的URL |
protocol | string | Array<string> |
用于连接的协议 |
resultSelector | (e: MessageEvent) => T |
|
serializer | (value: T) => WebSocketMessage |
一个序列化程序,用于从传递的值之前创建消息 消息发送到服务器。 默认为 JSON.stringify。 |
deserializer | (e: MessageEvent) => T |
一个反序列化器,用于从服务器到达套接字的消息 服务器。 默认为 JSON.parse。 |
openObserver | NextObserver<Event> |
一个观察器,监视基础Web套接字上何时发生打开事件。 |
closeObserver | NextObserver<CloseEvent> |
当基础 webSocket 上发生关闭事件时,观察者会进行监视 |
closingObserver | NextObserver<void> |
观察者观察由于什么原因将要发生关闭 取消订阅。 |
WebSocketCtor | { new (url: string, protocols?: string | string[]): WebSocket; } |
要使用的 WebSocket 构造函数。 这对于使用诸如 Node 中的 WebSocket 内置(WebSocket 是 DOM API),或用于模拟 WebSocket 用于测试目的 |
binaryType | 'blob' | 'arr |