对象 WebSocket
WebSocket 包协议转换处理器
用以将 Http 协议转换为 WebSocket 包协议消息。创建方式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21var ws = require('ws');
var http = require('http');
var serv = new http.Server(8811, ws.upgrade((conn) => {
conn.onmessage = msg => {
conn.send(new Date());
};
}));
serv.run(r => 0);
var sock = new ws.Socket('ws://127.0.0.1:8811');
sock.on('open', () => {
setInterval(() => {
sock.send('get date');
}, 1000);
});
sock.onmessage = evt => {
console.log(evt.data);
}
继承关系
构造函数
WebSocket
WebSocket 构造函数
1
2
3new WebSocket(String url,
String protocol = "",
String origin = "");
调用参数:
- url: String, 指定连接的服务器
- protocol: String, 指定握手协议,缺省为 ""
- origin: String, 指定握手时模拟的源,缺省为 ""
WebSocket 构造函数
1
2new WebSocket(String url,
Object opts);
调用参数:
- url: String, 指定连接的服务器
- opts: Object, 连接选项,缺省是 {}
opts 包含请求的附加选项,支持的内容如下:
1
2
3
4
5
6
7
8{
"protocol": "", // 指定握手协议,缺省为空
"origin": "", // 指定握手时模拟的源,缺省为空
"perMessageDeflate": false, // 指定是否支持压缩,缺省不支持
"maxPayload": 67108864, // 指定最大数据包尺寸,缺省为 67108864
"httpClient": hc, // 自定义 httpClient 对象,缺省使用全局 httpClient
"headers": // 指定 http(s) 连接时携带的 header,缺省为 {},
}
静态属性
defaultMaxListeners
Integer, 默认全局最大监听器数
1static Integer WebSocket.defaultMaxListeners;
成员属性
url
String, 查询当前对象连接的服务器
1readonly String WebSocket.url;
protocol
String, 查询当前对象连接时的协议
1readonly String WebSocket.protocol;
origin
String, 查询当前对象连接的源
1readonly String WebSocket.origin;
readyState
Integer, 查询当前对象的连接状态,参见 ws
1readonly Integer WebSocket.readyState;
onopen
Function, 查询和绑定连接成功事件,相当于 on("open", func);
1Function WebSocket.onopen;
onmessage
Function, 查询和绑定接受到对方消息的事件,相当于 on("message", func);
1Function WebSocket.onmessage;
onclose
Function, 查询和绑定连接关闭的事件,相当于 on("close", func);
1Function WebSocket.onclose;
onerror
Function, 查询和绑定错误发生的事件,相当于 on("error", func);
1Function WebSocket.onerror;
成员函数
close
关闭当前连接,此操作会向对方发送 CLOSE 数据包,并等待对方响应
1
2WebSocket.close(Integer code = 1000,
String reason = "");
调用参数:
- code: Integer, 指定关闭的代码,允许值为 3000-4999 或者 1000,缺省为 1000
- reason: String, 指定关闭的原因,缺省为 ""
send
向对方发送一段文本
1WebSocket.send(String data);
调用参数:
- data: String, 指定发送的文本
向对方发送一段二进制数据
1WebSocket.send(Buffer data);
调用参数:
- data: Buffer, 指定发送的二进制数据
ref
维持 fibjs 进程不退出,在对象绑定期间阻止 fibjs 进程退出
1WebSocket WebSocket.ref();
返回结果:
- WebSocket, 返回当前对象
unref
允许 fibjs 进程退出,在对象绑定期间允许 fibjs 进程退出
1WebSocket WebSocket.unref();
返回结果:
- WebSocket, 返回当前对象
on
绑定一个事件处理函数到对象
1
2Object WebSocket.on(String ev,
Function func);
调用参数:
- ev: String, 指定事件的名称
- func: Function, 指定事件处理函数
返回结果:
- Object, 返回事件对象本身,便于链式调用
绑定一个事件处理函数到对象
1Object WebSocket.on(Object map);
调用参数:
- map: Object, 指定事件映射关系,对象属性名称将作为事件名称,属性的值将作为事件处理函数
返回结果:
- Object, 返回事件对象本身,便于链式调用
addListener
绑定一个事件处理函数到对象
1
2Object WebSocket.addListener(String ev,
Function func);
调用参数:
- ev: String, 指定事件的名称
- func: Function, 指定事件处理函数
返回结果:
- Object, 返回事件对象本身,便于链式调用
绑定一个事件处理函数到对象
1Object WebSocket.addListener(Object map);
调用参数:
- map: Object, 指定事件映射关系,对象属性名称将作为事件名称,属性的值将作为事件处理函数
返回结果:
- Object, 返回事件对象本身,便于链式调用
prependListener
绑定一个事件处理函数到对象起始
1
2Object WebSocket.prependListener(String ev,
Function func);
调用参数:
- ev: String, 指定事件的名称
- func: Function, 指定事件处理函数
返回结果:
- Object, 返回事件对象本身,便于链式调用
绑定一个事件处理函数到对象起始
1Object WebSocket.prependListener(Object map);
调用参数:
- map: Object, 指定事件映射关系,对象属性名称将作为事件名称,属性的值将作为事件处理函数
返回结果:
- Object, 返回事件对象本身,便于链式调用
once
绑定一个一次性事件处理函数到对象,一次性处理函数只会触发一次
1
2Object WebSocket.once(String ev,
Function func);
调用参数:
- ev: String, 指定事件的名称
- func: Function, 指定事件处理函数
返回结果:
- Object, 返回事件对象本身,便于链式调用
绑定一个一次性事件处理函数到对象,一次性处理函数只会触发一次
1Object WebSocket.once(Object map);
调用参数:
- map: Object, 指定事件映射关系,对象属性名称将作为事件名称,属性的值将作为事件处理函数
返回结果:
- Object, 返回事件对象本身,便于链式调用
prependOnceListener
绑定一个事件处理函数到对象起始
1
2Object WebSocket.prependOnceListener(String ev,
Function func);
调用参数:
- ev: String, 指定事件的名称
- func: Function, 指定事件处理函数
返回结果:
- Object, 返回事件对象本身,便于链式调用
绑定一个事件处理函数到对象起始
1Object WebSocket.prependOnceListener(Object map);
调用参数:
- map: Object, 指定事件映射关系,对象属性名称将作为事件名称,属性的值将作为事件处理函数
返回结果:
- Object, 返回事件对象本身,便于链式调用
off
从对象处理队列中取消指定函数
1
2Object WebSocket.off(String ev,
Function func);
调用参数:
- ev: String, 指定事件的名称
- func: Function, 指定事件处理函数
返回结果:
- Object, 返回事件对象本身,便于链式调用
取消对象处理队列中的全部函数
1Object WebSocket.off(String ev);
调用参数:
- ev: String, 指定事件的名称
返回结果:
- Object, 返回事件对象本身,便于链式调用
从对象处理队列中取消指定函数
1Object WebSocket.off(Object map);
调用参数:
- map: Object, 指定事件映射关系,对象属性名称作为事件名称,属性的值作为事件处理函数
返回结果:
- Object, 返回事件对象本身,便于链式调用
removeListener
从对象处理队列中取消指定函数
1
2Object WebSocket.removeListener(String ev,
Function func);
调用参数:
- ev: String, 指定事件的名称
- func: Function, 指定事件处理函数
返回结果:
- Object, 返回事件对象本身,便于链式调用
取消对象处理队列中的全部函数
1Object WebSocket.removeListener(String ev);
调用参数:
- ev: String, 指定事件的名称
返回结果:
- Object, 返回事件对象本身,便于链式调用
从对象处理队列中取消指定函数
1Object WebSocket.removeListener(Object map);
调用参数:
- map: Object, 指定事件映射关系,对象属性名称作为事件名称,属性的值作为事件处理函数
返回结果:
- Object, 返回事件对象本身,便于链式调用
removeAllListeners
从对象处理队列中取消所有事件的所有监听器, 如果指定事件,则移除指定事件的所有监听器。
1Object WebSocket.removeAllListeners(String ev);
调用参数:
- ev: String, 指定事件的名称
返回结果:
- Object, 返回事件对象本身,便于链式调用
从对象处理队列中取消所有事件的所有监听器, 如果指定事件,则移除指定事件的所有监听器。
1Object WebSocket.removeAllListeners(Array evs = []);
调用参数:
- evs: Array, 指定事件的名称
返回结果:
- Object, 返回事件对象本身,便于链式调用
setMaxListeners
监听器的默认限制的数量,仅用于兼容
1WebSocket.setMaxListeners(Integer n);
调用参数:
- n: Integer, 指定事件的数量
getMaxListeners
获取监听器的默认限制的数量,仅用于兼容
1Integer WebSocket.getMaxListeners();
返回结果:
- Integer, 返回默认限制数量
listeners
查询对象指定事件的监听器数组
1Array WebSocket.listeners(String ev);
调用参数:
- ev: String, 指定事件的名称
返回结果:
- Array, 返回指定事件的监听器数组
listenerCount
查询对象指定事件的监听器数量
1Integer WebSocket.listenerCount(String ev);
调用参数:
- ev: String, 指定事件的名称
返回结果:
- Integer, 返回指定事件的监听器数量
查询对象指定事件的监听器数量
1
2Integer WebSocket.listenerCount(Value o,
String ev);
调用参数:
- o: Value, 指定查询的对象
- ev: String, 指定事件的名称
返回结果:
- Integer, 返回指定事件的监听器数量
eventNames
查询监听器事件名称
1Array WebSocket.eventNames();
返回结果:
- Array, 返回事件名称数组
emit
主动触发一个事件
1
2Boolean WebSocket.emit(String ev,
...args);
调用参数:
- ev: String, 事件名称
- args: ..., 事件参数,将会传递给事件处理函数
返回结果:
- Boolean, 返回事件触发状态,有响应事件返回 true,否则返回 false
toString
返回对象的字符串表示,一般返回 "[Native Object]",对象可以根据自己的特性重新实现
1String WebSocket.toString();
返回结果:
- String, 返回对象的字符串表示
toJSON
返回对象的 JSON 格式表示,一般返回对象定义的可读属性集合
1Value WebSocket.toJSON(String key = "");
调用参数:
- key: String, 未使用
返回结果:
- Value, 返回包含可 JSON 序列化的值