Отправка на сервер WebSocket с PHP? - PullRequest
0 голосов
/ 09 октября 2018

Я запускаю сервер Node.js WebSocket через порт 3000 на той же машине, где я использую Apache / PHP, используя обратный прокси-сервер через Apache.Это мой файл HTTPD:

  <VirtualHost *:80>
     ProxyRequests off
     SSLProxyEngine on
     ProxyPass /node/ ws://localhost:3000/node/
     ProxyPassReverse /node/ ws://localhost:3000/node/
  </VirtualHost>
  <VirtualHost *:443>
     ProxyRequests off
     SSLProxyEngine on
     ProxyPass /node/ ws://localhost:3000/node/
     ProxyPassReverse /node/ ws://localhost:3000/node/
  </VirtualHost>

Допустим, мое доменное имя - "example.com".Затем, чтобы подключиться к серверу WebSocket через браузер, я бы использовал этот JS:

var connection = new WebSocket("wss://example.com/node/");

Это нормально работает, и я успешно отправляю и получаю сообщения из браузеров.

ОднакоМне также нужно иметь возможность отправлять (не получать) сообщения на сервер WebSocket, используя PHP, с той же машины.Я пробовал несколько конфигураций fsockopen, и ни одна из них не работала.Вот те, которые я пробовал, с получающимися сообщениями об ошибках:

$fp = fsockopen("example.com/node/", 3000); //php_network_getaddresses: getaddrinfo failed: Name or service not known

$fp = fsockopen("ssl://example.com/node/", 3000); //php_network_getaddresses: getaddrinfo failed: Name or service not known

$fp = fsockopen("tls://example.com/node/", 3000); //php_network_getaddresses: getaddrinfo failed: Name or service not known

$fp = fsockopen("http://example.com/node/", 3000); //Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?

$fp = fsockopen("https://example.com/node/", 3000); //Unable to find the socket transport "https" - did you forget to enable it when you configured PHP?

$fp = fsockopen("wss://example.com/node/", 3000); //Unable to find the socket transport "wss" - did you forget to enable it when you configured PHP?

$fp = fsockopen("ws://example.com/node/", 3000); //Unable to find the socket transport "ws" - did you forget to enable it when you configured PHP?

$fp = fsockopen("example.com/node/", 443); //php_network_getaddresses: getaddrinfo failed: Name or service not known

$fp = fsockopen("ssl://example.com/node/", 443); //php_network_getaddresses: getaddrinfo failed: Name or service not known

$fp = fsockopen("tls://example.com/node/", 443); //php_network_getaddresses: getaddrinfo failed: Name or service not known

$fp = fsockopen("http://example.com/node/", 443); //Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?

$fp = fsockopen("https://example.com/node/", 443); //Unable to find the socket transport "https" - did you forget to enable it when you configured PHP?

$fp = fsockopen("wss://example.com/node/", 443); //Unable to find the socket transport "wss" - did you forget to enable it when you configured PHP?

$fp = fsockopen("ws://example.com/node/", 443); //Unable to find the socket transport "ws" - did you forget to enable it when you configured PHP?

$fp = fsockopen("example.com/node/", 80); //php_network_getaddresses: getaddrinfo failed: Name or service not known

$fp = fsockopen("ssl://example.com/node/", 80); //php_network_getaddresses: getaddrinfo failed: Name or service not known

$fp = fsockopen("tls://example.com/node/", 80); //php_network_getaddresses: getaddrinfo failed: Name or service not known

$fp = fsockopen("http://example.com/node/", 80); //Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?

$fp = fsockopen("https://example.com/node/", 80); //Unable to find the socket transport "https" - did you forget to enable it when you configured PHP?

$fp = fsockopen("wss://example.com/node/", 80); //Unable to find the socket transport "wss" - did you forget to enable it when you configured PHP?

$fp = fsockopen("ws://example.com/node/", 80); //Unable to find the socket transport "ws" - did you forget to enable it when you configured PHP?

Я также попробовал все эти конфигурации, используя "localhost" и "127.0.0.1".И я также экспериментировал с использованием встроенных функций библиотеки PHP socket_create и socket_connect со всеми теми же именами хостов, IP-адресами и портами - все это приводило к тем же типам ошибок «неизвестного хоста».Что я делаю неправильно?Как правильно это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...