Почему Node не может настроить сервер именованных каналов на рабочем месте в Windows?
Я работаю над включением поддержки кластера в проекте, над которым я работаю. Этот вопрос напрямую связан с утверждением в документации по Nodejs для модуля кластера:
от: https://nodejs.org/api/cluster.html
Обратите внимание, что в Windows пока невозможно настроить сервер именованных каналов в работнике.
- Что именно это означает?
- Каковы последствия этого?
Из документов и других исследований, которые я провел, реальные практические последствия этого ограничения мне не ясны.
1 ответ
Процесс может представить именованный канал как способ общения с другими заинтересованными сторонами - т.е. сервер nginx может предоставить именованный канал, куда будут отправляться все входящие запросы (просто идея - я не уверен, что nginx сможет это сделать).
Из процесса Node.js (но не работника кластера) вы можете запустить http-сервер (или даже простой TCP-сервер), который прослушивает сообщения, отправленные на этот именованный канал:
http.createServer().listen('\\.\pipe\nginx')
Документы для .listen()
Подпись метода здесь, именно эта часть представляет интерес:
Запустите сервер, прослушивающий соединения с заданным дескриптором, который уже связан с портом, сокетом домена UNIX или именованным каналом Windows
Однако, согласно предупреждению, эта функциональность недоступна от работника кластера по причинам, которые мне не понятны.
Вот соответствующий коммит в Node.js, который намекает на это ограничение. Вы можете найти его, открыв документ Markdown для кластера, посмотрев на git blame и немного углубившись в историю, пока не доберетесь до коммита, который представляет эту заметку.
Это ограничение не влияет на нормальное межпроцессное взаимодействие, поэтому кластер работает на Win32 так же, как и на системах Unix.
Примечание: если подумать, этот пример nginx немного вводит в заблуждение, поскольку именованный канал, на мой взгляд, не может использоваться для двунаправленной связи с отслеживанием состояния. Это только в одну сторону, т.е. source-> слушатель. Но я надеюсь, что передал общую идею, лежащую в основе ограничения.