WebSockets(JS,Apache,PHP)

时间:2015-12-30 21:03:23

标签: networking websocket streaming mod-proxy

我只是尝试使用javascript,apache,php来进行WebSocket握手。

为了清楚起见,我们开始:

  • 服务器版本:Apache / 2.4.7(Ubuntu)
  • PHP 5.5.9-1ubuntu4.14
  • Chrome版本47.0.2526.106(64位)
  • 我在端口8080和8090都打开并接受IPv4 / IPv6

{CLIENT}

当您访问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(/var/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 个答案:

答案 0 :(得分:1)

您的服务器端PHP页面必须包含用于侦听websocket连接端口的代码。 Apache服务器侦听HTTP请求而不是websocket连接。试试socket.io。有一个PHP here的实现。

另一个选项是socketo.me

G00d 1uck。