PHP Websocket-Entwicklungshandbuch zur Implementierung der Echtzeit-Verkehrsinformationsabfragefunktion
composer require cboden/ratchet
3.2 Erstellen Sie einen Websocket-Server
Erstellen Sie eine server.php
-Datei im Projektstammverzeichnis und fügen Sie den folgenden Code hinzu:
<?php require 'vendor/autoload.php'; use RatchetServerIoServer; use RatchetHttpHttpServer; use RatchetWebSocketWsServer; $server = IoServer::factory( new HttpServer( new WsServer( new TrafficInfo() ) ), 8080 // 服务器端口号 ); $server->run();
TrafficInfo
die Websocket-Anwendungsklasse, die wir erstellen werden. 3.3 Websocket-Anwendungsklasse erstellen
Erstellen Sie eine TrafficInfo.php
-Datei im Projektstammverzeichnis und fügen Sie den folgenden Code hinzu: server.php
文件,并添加以下代码:
<?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); } } }
这段代码创建了一个Websocket服务器并监听8080端口。其中,TrafficInfo
是我们将会创建的Websocket应用类。
3.3 创建Websocket应用类
在项目根目录下创建一个TrafficInfo.php
文件,并添加以下代码:
<!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>
这段代码定义了一个TrafficInfo
类,并实现了MessageComponentInterface
接口。在该类中,我们重写了onOpen
、onMessage
、onClose
和onError
等方法,用于处理与客户端的交互,并实现了一个broadcast
方法,用于将数据发送给所有连接的客户端。
index.html
文件,并添加以下代码:php server.php
这段代码创建了一个Websocket连接,并监听服务器的消息。当收到消息时,将数据解析为JSON格式,并将实时交通信息显示在页面上。
运行程序
将上述文件放置在Apache服务器的根目录下,并使用命令行进入项目根目录,运行以下命令启动Websocket服务器:
在浏览器中打开index.html
rrreee
TrafficInfo
-Klasse und implementiert die MessageComponentInterface
-Schnittstelle. In dieser Klasse überschreiben wir Methoden wie onOpen
, onMessage
, onClose
und onError
für die Verarbeitung von Interaktionen mit Clients und implementiert eine broadcast
-Methode zum Senden von Daten an alle verbundenen Clients.
Erstellen Sie eine index.html
-Datei im Projektstammverzeichnis und fügen Sie den folgenden Code hinzu:
index.html
, um Echtzeit-Verkehrsinformationen in Echtzeit zu erhalten. 🎜🎜Bisher haben wir eine mit PHP entwickelte Echtzeit-Abfragefunktion für Verkehrsinformationen fertiggestellt und über Websocket eine bidirektionale Echtzeitkommunikation zwischen dem Server und dem Client realisiert. Sie können nach Ihren eigenen Bedürfnissen weiterentwickeln und optimieren. 🎜🎜Zusammenfassung🎜Dieser Artikel stellt den Prozess der Entwicklung einer Echtzeit-Abfragefunktion für Verkehrsinformationen mithilfe von PHP vor und stellt entsprechende Codebeispiele bereit. Die Websocket-Technologie eignet sich gut für die Umsetzung von Datenaktualisierungen und Interaktionen in Echtzeit und kann viele Echtzeit-Kommunikationsanforderungen erfüllen. Ich hoffe, dieser Artikel kann Ihnen hilfreich sein. Vielen Dank fürs Lesen! 🎜Das obige ist der detaillierte Inhalt vonPHP-Websocket-Entwicklungshandbuch zur Implementierung der Echtzeit-Abfragefunktion für Verkehrsinformationen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!