分包原因
项目中为了兼容大部分手机,实现分包发送,每次只能20byte,这个传输速度实在有点慢, 对传输速度要求比较高的, 去设置 MTU 吧(安卓手机), 苹果手机经过几种机型的测试(iphone6s - iPhoneX),不用设置 MTU(而且设置也会失败,看官方文档), 每次传248byte都没问题, 但有一点是,小程序的传输速度(例如 50ms/包)远大于蓝牙接收速度(可能是 100ms/包), 蓝牙那边接收速度很慢, 延迟很高. 建议传低字节的.有小伙伴解决了这个问题,请指教.
- JRBLE
- 了解 ArrayBuffer 的使用
/**
* 分包发送
* @param {Object} ArrayBuffer
*/
function createChunks(buffer) {
const offset = 20; // 偏移量
let pos = 0; // 位置
let bytes = buffer.byteLength; // 总字节
while (bytes > 0) {
let endPos = bytes > offset ? (pos + offset) : (pos + bytes);
const tempBuffer = buffer.slice(pos, endPos);
pos += offset;
bytes -= offset;
// 延迟发送
sendDelay(150, tempBuffer).then(buffer => {
JRBLE && JRBLE.writeBLECharacteristicValue(buffer).then(res=>{
// console.log(res)
})
})
}
}
/**
* 数据分包延迟执行函数
* @param {Number} delay 毫秒数
* @param {ArrayBuffer} buffer 数据
* @return {Promise}
*/
function sendDelay(delay, buffer) {
return new Promise((resolve, reject) => {
setTimeout(() => resolve(buffer), delay);
})
}