仅针对上下文,我所拥有的是相对高吞吐量的websocket实现。消息通过打开的websocket从服务器发送到服务器。但是,当连接丢失时,我们需要对消息进行排队,直到重新获得连接。在这一点上,我们并不关心持久性,因为如果服务器崩溃,我们不需要备份消息。我们也不太关心消息的顺序。
所以到目前为止我的内容类似于以下内容:
function sendPayload( payload ) {
var self = this;
if ( self._state !== states.connected ) {
// Queue until connected
setImmediate( sendPayload.bind( self, payload ) );
}
else {
self._wsClient.send( payload );
}
}
上面已经引起了同行的一些奇怪的表情,所以我想让你们所有人都去做。我希望避免管理一个实际的队列(填充数组等),并认为这是一种快速简便的方法,可以在建立连接之前保持消息保持不变,并且一旦发生连接就快速发送它们。
有人建议使用setTimeout(fn,0)可能会更好,但实际上没有提供太多详细信息。从这个意义上讲,根据我的要求,我不认为它们之间会有太大的相关差异。
以上哪种方法比另一方更好,或者我应该完全不同地做这件事?