是否有可能检查net套接字当前是否正在工作(即:主动发送或接收数据)?我检查了documentation,但我找不到任何相关内容 .
在我的例子中,我在套接字客户端和节点服务器之间有一个打开的套接字 . 当HTTP客户端发出请求时,服务器会在套接字客户端下进行通信 .
问题是如果 list-files
当前正在进行中并且我请求 rename-file
,则第一个请求会阻止该操作 . 我的解决方案是在节点服务器和套接字客户端之间有多个开放套接字,以便并行化请求 .
为了知道我可以用于哪个套接字请求,我需要知道它是否空闲或已经在另一个请求上工作(例如:特别是在文件下载/上传正在进行时) .
var clientSockets = []
router.post('/list-files', function(req, res) {
var clientSockets = clientSockets.filter(function(currSocket) {
return currSocket.userID === "user1@example.com"
})
// What should I do here?
// var availableClientSocket = clientSockets.filter(
writeMessageToSocket(availableClientSocket, socketReq.fromHttpReq(req))
readMessageFromSocket(availableClientSocket, socketRes)
res.write(socketRes)
}
router.post('/rename-file', function(req, res) {
// ...
}
1 回答
您可以为每个套接字提供一个ID并添加一个数组
workingSockets
:现在,您需要稍微重写一下代码:
clientSockets
now现在是一个包含JSON对象的数组: