一种解决AJAX长轮询导致服务器冻结的方法是使用Websockets。Websockets是一种用于实时通信的协议,它允许服务器主动向客户端推送消息,而无需客户端不断轮询服务器。
以下是一个使用Websockets进行实时通信的示例代码:
JavaScript代码:
var socket = new WebSocket("ws://localhost:8080");
socket.onopen = function() { console.log("连接已建立"); };
socket.onmessage = function(event) { console.log("收到消息: " + event.data); };
PHP代码:
$server = new \Ratchet\WebSocket\WsServer(new MyWebSocketServer()); $server->disableVersion(0); // 关闭WebSocket版本0 (安全漏洞)
$loop = \React\EventLoop\Factory::create(); $socket = new \React\Socket\Server($loop);
$server->listen($socket);
$loop->run();
使用Websockets可以显着减少服务器负载并提高应用程序的实时性。