Web Socket
类:WebSocket 继承 EventTarget¶
使用 Chromium 的原生网络库从主进程创建 WebSocket 连接
进程:主进程
net.WebSocket 是 WHATWG WebSocket 接口的直接替代品,它通过 Chromium 的网络栈而非 Node.js 路由连接。当您需要的主进程 WebSocket 连接具有以下特征时,请使用它:
- 使用系统或会话的代理配置(PAC、WPAD)。
- 根据平台信任库和会话的证书验证策略验证 TLS 证书。
- 遵循会话级配置(自定义 CA、主机解析规则等)。
- 在启用
useSessionCookies时发送会话的 Cookie。
该类实现了标准的 WebSocket 接口(一个 EventTarget),因此为浏览器或 Node.js 全局 WebSocket 编写的代码无需修改即可运行:
const { app, net } = require('electron')
app.whenReady().then(() => {
const ws = new net.WebSocket('wss://echo.websocket.events')
ws.onopen = () => ws.send('hello')
ws.onmessage = (event) => {
console.log('received', event.data)
ws.close()
}
})
net.WebSocket 只能在应用触发 ready 事件之后使用。
new WebSocket(url[, protocols])¶
urlstring - 要连接的 URL。协议必须是ws:或wss:(http:和https:也可接受,并像浏览器中一样被重写为对应的 WebSocket 协议)。protocolsstring | string[] | WebSocketOptions(可选)- 一个或多个 WebSocket 子协议,或一个 Electron 专属的选项对象。
将选项对象作为第二个参数传入是 Electron 的扩展功能;双参数形式 new net.WebSocket(url, protocols) 与 WHATWG 构造函数 完全兼容。
静态属性¶
WebSocket.CONNECTING 只读¶
一个值为 0 的 Integer 常量,即打开握手进行中时的 readyState 值。
WebSocket.OPEN 只读¶
一个值为 1 的 Integer 常量,即连接建立后的 readyState 值。
WebSocket.CLOSING 只读¶
一个值为 2 的 Integer 常量,即关闭握手进行中时的 readyState 值。
WebSocket.CLOSED 只读¶
一个值为 3 的 Integer 常量,即连接关闭后的 readyState 值。
实例属性¶
ws.url 只读¶
一个 string,表示连接解析后的 URL。
ws.readyState 只读¶
一个 Integer,表示连接的当前状态:WebSocket.CONNECTING(0)、WebSocket.OPEN(1)、WebSocket.CLOSING(2)或 WebSocket.CLOSED(3)之一。
ws.bufferedAmount 只读¶
一个 Integer,表示已通过 send() 排队但尚未交给网络的应用程序数据字节数。
ws.protocol 只读¶
一个 string,包含服务器选定的子协议。在连接打开之前,或服务器未选择子协议时,该值为空字符串。
ws.extensions 只读¶
一个 string,包含服务器协商的扩展(例如 permessage-deflate)。
ws.binaryType¶
一个 string,控制传入的二进制消息在 message 事件中的呈现方式。可以是 nodebuffer、arraybuffer 或 blob。默认为 nodebuffer。
'nodebuffer' 是 Electron 的扩展,它以 Buffer 对象的形式传递二进制消息,这通常是主进程中最方便的表示形式。将 binaryType 设置为 'arraybuffer' 或 'blob' 可获得与渲染器的 WebSocket 相同的行为。
ws.onopen¶
open 事件的事件处理器,类型为 Function | null。等同于调用 addEventListener('open', ...)。
ws.onmessage¶
message 事件的事件处理器,类型为 Function | null。等同于调用 addEventListener('message', ...)。
ws.onerror¶
error 事件的事件处理器,类型为 Function | null。等同于调用 addEventListener('error', ...)。
ws.onclose¶
close 事件的事件处理器,类型为 Function | null。等同于调用 addEventListener('close', ...)。
实例方法¶
ws.send(data)¶
datastring | ArrayBufferLike | ArrayBufferView | Blob - 要发送的数据。字符串以文本帧形式发送;其他所有内容以二进制帧形式发送。
将 data 加入队列以传输到服务器。如果 readyState 为 CONNECTING,则抛出 InvalidStateError DOMException。
ws.close([code][, reason])¶
codeInteger(可选)- WebSocket 关闭代码。必须为1000,或处于3000–4999范围内。reasonstring(可选)- 人类可读的关闭原因。编码为 UTF-8 后不得超过 123 字节。
关闭连接。在仍处于 CONNECTING 状态时调用 close() 会中止握手。
事件¶
net.WebSocket 是一个 EventTarget,而不是 EventEmitter。使用 addEventListener() 或相应的 on* 事件处理器属性进行监听:
open- 当连接建立且打开握手完成时触发。此事件之后,protocol和extensions会反映与服务器协商的值。message- 当消息到达时触发,携带一个MessageEvent。对于文本帧,event.data是一个string;对于二进制帧,则是Buffer、ArrayBuffer或Blob(取决于binaryType)。error- 当连接失败时触发。其后总会触发一个close事件。close- 当连接因任何原因关闭时触发,携带一个CloseEvent(code、reason、wasClean)。当连接失败时(例如握手被拒绝或网络不可达),code为1006,Electron 会将reason设置为底层网络错误的简短描述,以便在未附加调试器的情况下也能诊断该故障。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 el/electron