PHP Websocket Development Guide to realize real-time traffic information query function
Start development
3.1 Install Websocket dependent libraries
Pass Composer installs the Ratchet library, which is a popular choice for developing Websocket applications in PHP. You can install it by running the following command in the terminal:
composer require cboden/ratchet
3.2 Create a Websocket server
In the project root Create a server.php
file in the directory and add the following code:
<?php require 'vendor/autoload.php'; use RatchetServerIoServer; use RatchetHttpHttpServer; use RatchetWebSocketWsServer; $server = IoServer::factory( new HttpServer( new WsServer( new TrafficInfo() ) ), 8080 // 服务器端口号 ); $server->run();
This code creates a Websocket server and listens to port 8080. Among them, TrafficInfo
is the Websocket application class we will create.
3.3 Create Websocket application class
Create a TrafficInfo.php
file in the project root directory and add the following code:
<?php use RatchetMessageComponentInterface; use RatchetConnectionInterface; class TrafficInfo implements MessageComponentInterface { private $connections; public function __construct() { $this->connections = new SplObjectStorage(); } public function onOpen(ConnectionInterface $conn) { // 当一个新的连接建立时触发 $this->connections->attach($conn); } public function onMessage(ConnectionInterface $from, $msg) { // 当接收到客户端发送的消息时触发 // 在这里处理相应的逻辑,并将数据发送给所有连接的客户端 $this->broadcast($msg); } public function onClose(ConnectionInterface $conn) { // 当一个客户端连接关闭时触发 $this->connections->detach($conn); } public function onError(ConnectionInterface $conn, Exception $e) { // 当发生错误时触发 $conn->send($e->getMessage()); $conn->close(); } private function broadcast($msg) { foreach ($this->connections as $conn) { $conn->send($msg); } } }
This code defines a TrafficInfo
class, and implements the MessageComponentInterface
interface. In this class, we override methods such as onOpen
, onMessage
, onClose
, and onError
to handle interactions with the client. , and implements a broadcast
method for sending data to all connected clients.
index.html
file in the project root directory and add the following code: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Traffic Info</title> </head> <body> <h1>Traffic Info</h1> <div id="traffic-info"></div> <script> var socket = new WebSocket('ws://localhost:8080'); socket.onmessage = function (event) { var data = JSON.parse(event.data); // 处理接收到的实时交通信息 document.getElementById('traffic-info').innerHTML = data.message; }; socket.onclose = function () { // 服务器连接关闭时触发 console.log('Connection closed'); }; </script> </body> </html>
This paragraph The code creates a Websocket connection and listens for messages from the server. When a message is received, the data is parsed into JSON format and real-time traffic information is displayed on the page.
Run the program
Place the above files in the root directory of the Apache server, and use the command line to enter the project root directory, and run the following command to start the Websocket server:
php server.php
Open the index.html
file in your browser to receive real-time traffic information in real time.
So far, we have completed a real-time traffic information query function developed using PHP, and realized real-time two-way communication between the server and the client through Websocket. You can further develop and optimize according to your own needs.
Summary
This article introduces the process of developing real-time traffic information query function using PHP and provides corresponding code examples. Websocket technology performs well in realizing real-time data updates and interactions, and can meet many real-time communication needs. I hope this article can be helpful to you, thank you for reading!
The above is the detailed content of PHP Websocket development guide to implement real-time traffic information query function. For more information, please follow other related articles on the PHP Chinese website!