我只是想用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。