W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
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
,如果我們 有興趣的監(jiān)聽數(shù)據(jù)從正在添加服務器: deserializer
, 這使我們可以在傳遞數(shù)據(jù)之前自定義數(shù)據(jù)的反序列化策略 到套接字客戶端。 默認情況下 deserializer
將應用于 JSON.parse
每條消息 從服務器。
deserializer ,此屬性的默認值為, JSON.parse
但由于只有兩個選項 對于傳入數(shù)據(jù),可以是文本或二進制數(shù)據(jù)。 我們可以應用自定義反序列化策略 或只是簡單地跳過默認行為。
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 當出現(xiàn)錯誤時, 允許我們設置自定義錯誤。
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 ,假設我們需要先執(zhí)行某種 init 任務,然后再將消息發(fā)送/接收到 webSocket 或發(fā)送連接成功的通知,這是在 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> |
用于連接的協(xié)議 |
resultSelector | (e: MessageEvent) => T |
|
serializer | (value: T) => WebSocketMessage |
一個序列化程序,用于從傳遞的值之前創(chuàng)建消息 消息發(fā)送到服務器。 默認為 JSON.stringify。 |
deserializer | (e: MessageEvent) => T |
一個反序列化器,用于從服務器到達套接字的消息 服務器。 默認為 JSON.parse。 |
openObserver | NextObserver<Event> |
一個觀察器,監(jiān)視基礎Web套接字上何時發(fā)生打開事件。 |
closeObserver | NextObserver<CloseEvent> |
當基礎 webSocket 上發(fā)生關閉事件時,觀察者會進行監(jiān)視 |
closingObserver | NextObserver<void> |
觀察者觀察由于什么原因?qū)⒁l(fā)生關閉 取消訂閱。 |
WebSocketCtor | { new (url: string, protocols?: string | string[]): WebSocket; } |
要使用的 WebSocket 構(gòu)造函數(shù)。 這對于使用諸如 Node 中的 WebSocket 內(nèi)置(WebSocket 是 DOM API),或用于模擬 WebSocket 用于測試目的 |
binaryType | 'blob' | 'arr |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: