我想使用PHP和nginx实现一个简单的WebSocket服务器,并且给人以下印象:
考虑到这一点,我尝试了以下简单的实现,包括JavaScript客户端,nginx配置和PHP服务器(见下文)。
结果:
Connection: upgrade
,Sec-WebSocket-Key: ***
和类似字段的WebSocket HTTP标头。我认为这很好。onopen
事件永远不会在客户端上触发,而这就是我被困住的地方。问题:
Javascript客户端:
function socket() {
var ws = new WebSocket("ws://socket/hello/");
ws.onopen = function() {
ws.send("Hello, World!");
};
ws.onmessage = function(event) {
console.log(event.data);
};
}
socket();
nginx配置:
server {
location /hello/ {
proxy_pass http://localhost:10000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
server_name socket;
root socket;
}
PHP服务器:
(完全按照PHP manual中的示例#1所述实施,仅将$address
更改为127.0.0.1
。)
答案 0 :(得分:2)
它可以,但仅当套接字服务器实现websocket协议时。如果您询问它是否可以用作通用TCP或UDP套接字,则不能。完全停止。