WebSockets (JS,Apache,PHP)



我只是想用javascript、apache、php实现WebSocket握手。

在我们开始之前,为了清晰起见:

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

{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_stunnel已安装

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

//PHP(/var/www/vhost/uploloader/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' . "rn" .
               'Host: example.com' . "rnrn";
    socket_write($sock, $request);
    socket_close($sock);
?>

我感到困惑的是,Apache正在绑定/侦听套接字和端口,所以我不知道如何在PHP中访问它。

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

另一种选择是socketo.me。

G00d 1 uck。

相关内容

  • 没有找到相关文章

最新更新