终止node.js中关闭Web套接字上的所有线程

时间:2017-01-27 13:25:50

标签: node.js multithreading sockets asynchronous websocket

我正在制作一个RESTful网络服务&为此,我使用node.js. 在我的Web服务中,我需要一个套接字来发送一些数据,以便套接字可以继续处理该数据并在每30秒后响应一次。所以,我使用" ws"节点包可以接受数据作为消息,我可以继续。

现在的问题是......

每当我关闭我的连接时,旧的进程将继续工作。

就像我每30秒发送变量first response is : 1 after 30 seconds : 2 after 30 seconds : 3 after 30 seconds : 4 after 30 seconds : 5 值一样,每次递增 像

first response is : 1
after 30 seconds  : 6
after 30 seconds  : 2
after 30 seconds  : 7
after 30 seconds  : 3
after 30 seconds  : 8
after 30 seconds  : 4
after 30 seconds  : 9
after 30 seconds  : 5
after 30 seconds  : 10
after 30 seconds  : 6
after 30 seconds  : 11
after 30 seconds  : 7
after 30 seconds  : 12
after 30 seconds  : 8

现在,如果我将关闭插座&重新打开然后会发给我一些像......

Private pName As String
Public Property Get Name() As String
    Name = pName
End Property
Public Property Let Name(value As String)
    pName = value
End Property

所以,正如你在这里看到的,它首先发送新数据1然后从5继续旧过程,所以它返回6然后2&然后7 .....

我认为这是因为node.js的多线程概念。持有旧数据以及使用新数据。

所以请任何人帮我解决问题。

1 个答案:

答案 0 :(得分:0)

实际上Node中没有多线程(有底层但没有在JavaScript层中)。因此,您无法终止任何线程,因为您只有一个可以使用的线程,并且您只能使用process.exit()终止它,这不是您想要的。

如果没有看到你的代码的一行,我只能推测,但似乎你没有重置你的setInterval函数。您似乎也在为所有套接字使用某种共享全局状态。除了停止你的setIntervals和/或取消套接字断开连接的超时,并且如果那不是你想要的所有套接字,也没有使用一个全局状态,除此之外我别无其他了。

下次添加一些代码示例。