This article mainly introduces the relevant information about PHP using swoole to update client data in real time. Friends in need can refer to it. I hope to be helpful.
If you want to update a list in real time, the traditional approach is to use polling. Taking the web as an example, the server is regularly requested through Ajax and then the data is obtained and displayed on the page. This method is simple to implement, but the disadvantage is that it wastes resources.
HTTP1.1 has newly added support for websocket, so that passive display can be transformed into active notification. That is, a persistent connection is maintained with the server through websocket. Once the data changes, the server notifies the client that the data has been updated, and then refreshes and other operations. This eliminates many unnecessary passive requests and saves server resources.
To implement a webscoket program, you first need to use a browser that supports html5
if(ws === null){ var wsServer = 'ws://'+ location.hostname +':8888'; ws = new WebSocket(wsServer); ws.onopen = function(){ console.log("socket连接已打开"); }; ws.onmessage = function(e){ console.log("message:" + e.data); }; ws.onclose = function(){ console.log("socket连接已断开"); }; ws.onerror = function(e){ console.log("ERROR:" + e.data); }; //离开页面时关闭连接 $(window).bind('beforeunload',function(){ ws.close(); } ); }
This way A client has been implemented, but the matter is far from over. The above code simply performs basic actions such as connection, dialogue, and shutdown. If you want to communicate with the server, you must have a more specific solution. For example, when receiving a message, determine the type and perform further operations.
Server: Swoole is used here for websocket development on the PHP server. It is very simple to use Swoole for PHP websocket development, and it also supports httpserver.
$server = new swoole_websocket_server("0.0.0.0", 8888); $server->on('open', function (swoole_websocket_server $server, $request) { echo "server: handshake success with fd{$request->fd}\n"; }); $server->on('message', function (swoole_websocket_server $server, $frame) { echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n"; $server->push($frame->fd, "this is server"); }); $server->on('close', function ($ser, $fd) { echo "client {$fd} closed\n"; }); $server->start();
swoole is a php extension. You can refer to the installation method here: How to install swoole extension in php
Related recommendations:
thinkphp5 and swoole use SMTP to implement asynchronous mass mailing examples
Swoole development key points introduction
php asynchronous multi-threaded swoole usage example
The above is the detailed content of PHP uses swoole to update client data in real time. For more information, please follow other related articles on the PHP Chinese website!