Есть ли возможность проверить, работает ли сокет 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