К сожалению, сокет WS не является сырым объектом TCP. Сокеты TCP представляют собой конструкции уровня 4 и могут передаваться между процессами как сырые дескрипторы (в основном целые числа, в большинстве базовых метафоров ОС). Сама операционная система обрабатывает все TCP-операции, такие как управление состоянием сеанса, и это важно, когда процессы хотите передать ручки.
Веб-сайты совершенно разные. Это метафорическая конструкция поверх соединения уровня 7 (HTTP). В слоях 5+ приложения сами по себе довольно много коммуникаций, помимо того, что предоставляет операционная система, - с заголовками, куки, состояниями WS-соединения и т. Д. Это больше, чем может быть закодировано в целочисленном дескрипторе, поэтому Node в настоящее время есть способ их обойти.
Как правило, большинство приложений, которым требуются соединения, которые должны быть переданы таким образом, принимают TCP-соединение на необработанном уровне, передают это дочернему элементу, а затем разрешают дочернему пользователю обрабатывать HTTP (и WS). Они не разделяют эту работу между основным и дочерним процессом. Извините, это не тот ответ, который вам нужен, но ваша архитектура приложения нуждается в переосмыслении, если вы построили вокруг этого ожидания. Между прочим, это не только Узел. Это применимо и к любому другому языку, например Python или Ruby, потому что все они представляют собой только высокоуровневые оболочки вокруг конструкций Berkeley Sockets, а сокет, проходящий в этом слое, основан на ручках, как описано выше.
Я вижу. То же самое относится и к классу кластера? (Https://nodejs.org/api/cluster.html). Может ли использоваться с этим, или он должен быть необработанным объектом http/tcp? – user1157885
Да. Класс Cluster - это просто синтаксический сахар вокруг самого child_process. Он предоставляет ряд полезных компонентов для запуска и прекращения работы детей, поддержания заданного числа работников и предоставления возможности детям и родителям разговаривать друг с другом. Но он не добавляет ничего лишнего, чтобы можно было перемещать WS-соединения. –