Я хочу сделать (W3C) метод websocket send
асинхронным, который вернет обещание, которое будет разрешено при отправке данных в сеть.
, поскольку официальный 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);
}
}
});
}