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 === "[email protected]"
})
// 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) {
// ...
}
私は手動でロジックを行うことができますが、公式で信頼できる解決策を求めています。 –
ソケットの 'end'イベントを利用することができます。 https://nodejs.org/api/net.html#net_class_net_socket – Benni