我正在寻找有关解决通过套接字发送消息时遇到的问题的最佳方法的建议。我需要确保保留消息发送的顺序,即先进先出,即使我不能保证套接字始终打开。
我的程序中有一个网络管理器,带有一个发送方法。此发送方法接受一个消息对象,然后尝试通过套接字将其推出。
但是,有时由于失去网络连接,套接字会关闭,我需要在等待套接字重新打开时停止发送消息并将任何新消息排队。当套接字重新打开时,排队的消息应该按顺序发送。
我正在使用 Javascript 和 Websockets。我现在有这样的东西,但它似乎有缺陷:
function send(msg) {
if (msg) {
outbox.push(msg);
}
if (!readyState) {
return setTimeout(send, 100);
}
while (outbox.length) {
socket.send(outbox.shift());
}
}
以前有没有人解决过这样的问题?我正在寻找一种构建程序的通用方法,或者可能是一种可以使用的算法。