Mit der Entwicklung der Internettechnologie konzentrieren sich immer mehr Websites und Anwendungen auf die Realisierung von Echtzeitkommunikation. Das WebSocket-Protokoll gilt als effektive Möglichkeit, Echtzeitkommunikation zu erreichen. In diesem Artikel wird erläutert, wie Sie mithilfe von PHP und WebSocket Echtzeit-Kommunikationsfunktionen implementieren.
Da WebSocket eine lange Verbindungsmethode verwendet, kann es die Effizienz der Datenübertragung erheblich verbessern und die Belastung des Servers verringern. In Echtzeit-Kommunikationsszenarien ist WebSocket zu einer unverzichtbaren Technologie geworden.
PHP und WebSocket
In diesem Artikel verwenden wir das Rachet-Framework, um Echtzeit-Kommunikationsfunktionen zu implementieren. Das Rachet-Framework ist ein Open-Source-Framework für PHP. Es bietet eine serverseitige Implementierung von WebSocket und kann eine Vielzahl von Webservern wie Apache, Nginx usw. unterstützen.
Implementierungsschritte
composer require cboden/ratchet
2. Schreiben Sie PHP-Code
<?php use RatchetMessageComponentInterface; use RatchetConnectionInterface; use RatchetServerIoServer; use RatchetHttpHttpServer; use RatchetWebSocketWsServer; require 'vendor/autoload.php'; class MyChat implements MessageComponentInterface { protected $clients; public function __construct() { $this->clients = new SplObjectStorage; } public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); echo "New connection! ({$conn->resourceId}) "; } public function onMessage(ConnectionInterface $from, $msg) { foreach ($this->clients as $client) { if ($from !== $client) { $client->send($msg); } } } public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); echo "Connection {$conn->resourceId} has disconnected "; } public function onError(ConnectionInterface $conn, Exception $e) { echo "An error has occurred: {$e->getMessage()} "; $conn->close(); } } $server = IoServer::factory( new HttpServer( new WsServer( new MyChat() ) ), 8080 ); $server->run();
Im Code ist eine Klasse namens MyChat definiert, die die MessageComponentInterface-Schnittstelle im Ratchet-Framework implementiert. Es enthält die folgenden 4 Methoden:
onOpen()
wird aufgerufen, wenn eine neue Verbindung hergestellt wird. onMessage()
Wird aufgerufen, wenn der Code eine Nachricht empfängt. onClose()
Wird aufgerufen, wenn die Verbindung geschlossen wird. onOpen()
当有新的连接建立时被调用。onMessage()
当代码接收到消息时被调用。onClose()
当连接被关闭时被调用。onError()
当出现错误时被调用。其中,onOpen()
方法记录了新连接建立的信息,onMessage()
方法将接收到的消息广播给所有连接的客户端,而onClose()
方法记录连接关闭的信息。
最后,代码通过IoServer::factory()
onError()
Wird aufgerufen, wenn ein Fehler auftritt.
onOpen()
die durch die neue Verbindung hergestellten Informationen auf und die Methode onMessage()
sendet die empfangene Nachricht an alle Verbindungen. Die Methode onClose()
zeichnet Informationen zum Schließen der Verbindung auf. Schließlich verwendet der Code IoServer::factory()
, um den Server zu erstellen und die Überwachung zu aktivieren. 3. Testen Sie: Starten Sie den Server in der Befehlszeile: php chat-server.php
Das obige ist der detaillierte Inhalt vonEchtzeitkommunikation mit PHP und WebSocket. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!