Почему Node не может настроить сервер именованных каналов на рабочем месте в Windows?

Я работаю над включением поддержки кластера в проекте, над которым я работаю. Этот вопрос напрямую связан с утверждением в документации по Nodejs для модуля кластера:

от: https://nodejs.org/api/cluster.html

Обратите внимание, что в Windows пока невозможно настроить сервер именованных каналов в работнике.

  1. Что именно это означает?
  2. Каковы последствия этого?

Из документов и других исследований, которые я провел, реальные практические последствия этого ограничения мне не ясны.

1 ответ

Процесс может представить именованный канал как способ общения с другими заинтересованными сторонами - т.е. сервер nginx может предоставить именованный канал, куда будут отправляться все входящие запросы (просто идея - я не уверен, что nginx сможет это сделать).

Из процесса Node.js (но не работника кластера) вы можете запустить http-сервер (или даже простой TCP-сервер), который прослушивает сообщения, отправленные на этот именованный канал:

http.createServer().listen('\\.\pipe\nginx')

Документы для .listen() Подпись метода здесь, именно эта часть представляет интерес:

Запустите сервер, прослушивающий соединения с заданным дескриптором, который уже связан с портом, сокетом домена UNIX или именованным каналом Windows

Однако, согласно предупреждению, эта функциональность недоступна от работника кластера по причинам, которые мне не понятны.

Вот соответствующий коммит в Node.js, который намекает на это ограничение. Вы можете найти его, открыв документ Markdown для кластера, посмотрев на git blame и немного углубившись в историю, пока не доберетесь до коммита, который представляет эту заметку.

Это ограничение не влияет на нормальное межпроцессное взаимодействие, поэтому кластер работает на Win32 так же, как и на системах Unix.

Примечание: если подумать, этот пример nginx немного вводит в заблуждение, поскольку именованный канал, на мой взгляд, не может использоваться для двунаправленной связи с отслеживанием состояния. Это только в одну сторону, т.е. source-> слушатель. Но я надеюсь, что передал общую идею, лежащую в основе ограничения.

Другие вопросы по тегам