我想使(W3C)websocket send
方法异步,它将返回promise,当将数据有效载荷发送到网络时,它将被解决。
由于发送数据时官方API没有回调,因此我想解决的唯一方法是使用套接字的bufferedAmount
属性。
我认为效率不高,因为我需要调用setTimeout
并在解决承诺之前轮询值直到缓冲区被耗尽为止
还有其他更有效的方法吗?
asyncSend(buffer){
this.socket.send(buffer);
return new Promise(resolve => {
let checkSend = () => {
if(this.socket.bufferedAmount === 0){
resolve(buffer.length);
}
else{
setTimeout(checkSend, 1);
}
}
});
}