более эффективный асинхронный метод отправки websocket - PullRequest
0 голосов
/ 07 ноября 2018

Я хочу сделать (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);
            }
        }
    });  
}
...