0.1.2 • Published 4 years ago
@hezedu/socket-request v0.1.2
socket-request
封装和解析数据并通过流传输. 支持 net.Socket 和 WebSocket. 有效解决粘包或分段的问题.
安装
npm install @hezedu/socket-request
API
new SocketRequest(socket, options)
socket
<net.Socket> 或 .options
isCompress
是否启用压缩. 默认false
compressTriggerPoint
消息体多大才触发压缩, 小于或等于该值将不会压缩. 默认1460
deflateFn
(str)
压缩方法, 需要 return 压缩好的二进制. 需要在isCompress
为true
时提供.inflateFn
解压方法, 需要在isCompress
为true
时提供.- 同步方法:
(bin)
需要 returnstr
. - 异步方法:
(bin, callback)
仅用于 socket 为 WebSocket 实例时.bin
压缩过的二进制callback
(str)
- 同步方法:
onReceive
(msg, reply)
收到消息时触发.msg
消息reply
(msg)
回复消息.
Returns:
sr
sr.request(msg, callback)
msg
可以为多种能被 JSON.stringify 的格式, Object, Array, String, Number, Boolean, null.callback(resMsg)
resMsg
为返回的数据, 格式同msg
.
示例
简单
const net = require('net');
const SocketRequest = require('@hezedu/socket-request');
const client = net.createConnection(40043, function(){
client.setEncoding('utf-8');
client.setNoDelay();
const sr = new SocketRequest(client, {
onReceive(msg, reply){
reply('received');
}
});
sr.request('Hello', (resData) => {
console.log('resData', resData);
})
}