0.1.2 • Published 5 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> 或 .optionsisCompress是否启用压缩. 默认falsecompressTriggerPoint消息体多大才触发压缩, 小于或等于该值将不会压缩. 默认1460deflateFn(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);
})
}