2015-12-30 5 views
0

Я просто пытаюсь получить рукопожатие WebSocket с помощью javascript, apache, php.WebSockets (JS, Apache, PHP)

Для ясности, прежде чем мы начнем:

  • версия Сервера: Apache/2.4.7 (Ubuntu)
  • PHP 5.5.9-1ubuntu4.14
  • Chrome версия 47,0. 2526.106 (64-бит)
  • У меня есть порт 8080 и 8090, открытый и принимающий как на IPv4/IPv6

{КЛИЕНТ}

Когда вы идете в example.com:8080 он будет работать следующий JS инициализации.

// JS

function init(){ 
    var socket = new WebSocket("ws://example.com:8090"); //redirect on port 8090 
    socket.send("Here's some text that the server is waiting for"); 
} 

{SERVER}

// APACHE (виртуальный конфигурации хоста) * mod_proxy & mod_proxy_wstunnel установлены

<VirtualHost *:8090>                
     ServerName example:8090         
     DocumentRoot /var/www/vhost/uploader                              
     ProxyPass "/sockets/" "http://example.com:8090"                        
</VirtualHost> 

// PHP (/ вар /www/vhost/uploader/sockets/index.php)

<?php 
    $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
    $ip = 'example.com'; 
    socket_bind($sock, $ip); 
    socket_connect($sock, $ip, 8090); 
    $request = 'GET/HTTP/1.1' . "\r\n" . 
       'Host: example.com' . "\r\n\r\n"; 
    socket_write($sock, $request); 
    socket_close($sock); 
?> 

Я смущен тем, что Apache выполняет привязку/прослушивание сокета и порта, поэтому я не знаю, как получить к нему доступ в PHP.

ответ

1

На вашей серверной стороне PHP-страница должна содержать код для прослушивания порта для подключения к сети. Сервер Apache прослушивает HTTP-запросы, а не для соединений в сети. Дайте socket.io попытку. Есть реализация для PHP here.

Другой вариант: socketo.me.

G00d 1uck.

+0

Хорошо, я не был уверен, что Apache передал его через некоторую переменную PHP. Таким образом, действительно apache (mod_proxy) строго перенаправляет запрос и поддерживает «соединение-живое» и позволяет устанавливать-config для клиентских подключений, вы все равно будете '$ sock = socket_create (AF_INET, SOCK_STREAM, SOL_TCP)' в php и все это , –

+0

Да, я видел socket.io, я написал свой собственный веб-сервер сокета раньше, чем в C, я просто новичок в этих директивах apache, так что все еще учась и немного теряюсь, так как есть примеры из онлайн-примеров. как. –