Можно
проверять длину буфера:
// every 100ms examine the socket and send more data
// only if all the existing data was sent out
setInterval(() => {
if (socket.bufferedAmount == 0) {
socket.send(moreData());
}
}, 100);
Вариант — сделать свою обёртку над буфером отправки. Чтобы в буфере самого WS было максимум одно сообщение, а остальные ждали в _вашей_ очереди, над которой вы полный хозяин.