在我的node.js
应用程序中,我将一组客户端套接字作为数组集合在一起。发生通讯错误时,我只需在插座上拨打destroy
即可。在将阵列从阵列中移除之前或之后销毁插槽
我的问题是:我应该从数组中删除之前还是之后销毁套接字?文件没有说太多。
var clientSockets = []
var destroySocketBefore = function(socket) {
socket.destroy()
var socketIdx = clientSockets.indexOf(socket)
if (socketIdx > -1) {
clientSockets.splice(socketIdx, 1)
}
}
var destroySocketAfter = function(socket) {
var socketIdx = clientSockets.indexOf(socket)
if (socketIdx > -1) {
clientSockets.splice(socketIdx, 1)
}
socket.destroy()
}
在
destroySocketBefore
的情况下,我不知道如果套接字在阵列中发现,如果我寻找它之前摧毁它,所以该数组还包含无效插座的可能性随后的逻辑。在
destroySocketAfter
的情况下,我不确定在从阵列中删除的套接字上调用destroy
是否会获得所需的结果。在拼接数组后,系统是否有可能删除套接字对象,因此有时我会在null
对象上调用destroy
。
我测试,似乎这两种方法的工作有没有差别,所以我不知道哪种方法是正确的。
这两者之间没有功能差异。该数组不受调用'socket.destroy()'的影响,并且套接字不受从数组中移除的影响,因此您可以按任意顺序执行它们。 – jfriend00
我不确定'销毁'套接字将导致一个空对象,所以一切都会炸毁。 –
调用'socket.destroy()'改变套接字对象的内部状态,但不会使对象消失。这只是对象的一种方法。 Javascript不能像你在C/C++中那样手动“释放”对象。所以,'socket'对象仍然存在,调用'.destroy()'后仍然存在一个Javascript对象。无论您在哪个订单中进行两项操作都无关紧要。 – jfriend00