gpt4 book ai didi

php - 从第一个客户端请求开始在 php 中启动一个 websocket 服务器

转载 作者:可可西里 更新时间:2023-11-01 13:28:31 36 4
gpt4 key购买 nike

我正在尝试使用 websocket 替换对服务器的常量 ajax 请求,这会更新 ajax 信息。

据我所知,在客户端-服务器场景中,我应该从命令行启动一个 php websocket 服务器:

php -q myserver.php

我想要获得的是在客户端第一次连接时启动服务器,并将此服务器用于所有其他客户端,不使用命令行:

var socket = new WebSocket("ws://localhost:10000/myserver.php");

如果服务器未运行并为此客户端打开连接,我想运行此命令。

这可能吗?

最佳答案

是的,这是可能的,但你应该看看 phpwebsocket

var host = "ws://localhost:10000/myserver.php";
try{
socket = new WebSocket(host);
log('WebSocket - status '+socket.readyState);
socket.onopen = function(msg){ log("Welcome - status "+this.readyState); };
socket.onmessage = function(msg){ log("Received: "+msg.data); };
socket.onclose = function(msg){ log("Disconnected - status "+this.readyState); };
}
catch(ex){ log(ex); }

你运行的服务器端 php -q myserver.php

log("Handshaking...");
list($resource,$host,$origin) = getheaders($buffer);
$upgrade = "HTTP/1.1 101 Web Socket Protocol Handshake\r\n" .
"Upgrade: WebSocket\r\n" .
"Connection: Upgrade\r\n" .
"WebSocket-Origin: " . $origin . "\r\n" .
"WebSocket-Location: ws://" . $host . $resource . "\r\n" .
"\r\n";
$handshake = true;
socket_write($socket,$upgrade.chr(0),strlen($upgrade.chr(0)));

phpwebsocket默认不支持RFC-6455所以你也可以看看下面的

关于php - 从第一个客户端请求开始在 php 中启动一个 websocket 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12894272/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com