Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiele für die PHP-WebSocket-Entwicklung: praktische Beispiele für die Implementierung bestimmter Funktionen

Beispiele für die PHP-WebSocket-Entwicklung: praktische Beispiele für die Implementierung bestimmter Funktionen

WBOY
WBOYOriginal
2023-09-11 12:21:271333Durchsuche

PHP WebSocket开发实例:如何实现特定功能的实用案例

PHP WebSocket-Entwicklungsbeispiele: Praktische Fälle zur Implementierung bestimmter Funktionen

Einführung:
Mit der Entwicklung des Internets weist das traditionelle HTTP-Protokoll einige Einschränkungen bei der Echtzeitkommunikation auf. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert und eine Echtzeitkommunikation zwischen Client und Server realisieren kann. In diesem Artikel wird anhand eines praktischen Falls vorgestellt, wie PHP WebSocket zum Implementieren bestimmter Funktionen verwendet wird.

  1. Einführung
    WebSocket ist ein Protokoll, das eine lange Verbindung zwischen dem Client und dem Server aufbaut und so eine bidirektionale Echtzeitkommunikation ermöglicht. Im Gegensatz zum herkömmlichen HTTP-Anfrage-Antwort-Modell stellt die WebSocket-Verbindung einen dauerhaften Kommunikationskanal zwischen dem Client und dem Server her, sodass der Server Daten aktiv an den Client übertragen kann.
  2. Praktischer Fall: Online-Chatroom
    Online-Chatroom ist eine der häufigsten Anwendungen von WebSocket. Benutzer können über einen Browser auf die Chatroom-Seite zugreifen, um in Echtzeit mit anderen Online-Benutzern zu kommunizieren. Im Folgenden stellen wir anhand eines praktischen Falls vor, wie Sie mit PHP WebSocket einen einfachen Online-Chatroom implementieren.

(1) Richten Sie einen WebSocket-Server ein
Zunächst müssen wir einen WebSocket-Server erstellen. Sie können die Swoole-Erweiterung von PHP verwenden, um einen WebSocket-Server zu erstellen. Swoole ist eine leistungsstarke PHP-Erweiterung, die WebSocket unterstützt. Wir können einen WebSocket-Server erstellen, indem wir den folgenden Code ausführen:

<?php
$server = new swoole_websocket_server("0.0.0.0", 9501);

$server->on('open', function ($server, $request) {
    echo "new connection open: ".$request->fd;
});

$server->on('message', function ($server, $frame) {
    echo "received message: ".$frame->data;
});

$server->on('close', function ($ser, $fd) {
    echo "connection close: ".$fd;
});

$server->start();
?>

In diesem Code erstellen wir einen WebSocket-Server mit der Überwachungs-IP-Adresse 0.0.0.0 und der Portnummer 9501. Wenn eine neue Verbindung hergestellt wird, ruft der Server automatisch die Event-Handler-Funktion open事件处理函数;当接收到客户端发送过来的消息时,服务器会调用message事件处理函数;而当连接关闭时,服务器会调用close auf.

(2) Front-End-Seitenentwicklung
Als nächstes müssen wir eine Front-End-Seite entwickeln, um die Chatroom-Oberfläche anzuzeigen und mit dem Server zu kommunizieren. Das Folgende ist ein einfacher Front-End-Seitencode:

<!DOCTYPE html>
<html>
<head>
    <title>WebSocket Chat Room</title>
    <script>
        var socket = new WebSocket("ws://localhost:9501");
        
        socket.onopen = function(event) {
            console.log("WebSocket connection open");
        };
        
        socket.onmessage = function(event) {
            console.log("Received message: " + event.data);
        };
        
        socket.onclose = function(event) {
            console.log("WebSocket connection closed");
        };
    </script>
</head>
<body>
    <h1>WebSocket Chat Room</h1>
    <div id="chat-messages"></div>
    <input type="text" id="input-message">
    <button onclick="sendMessage()">Send</button>
    
    <script>
        function sendMessage() {
            var message = document.getElementById("input-message").value;
            socket.send(message);
        }
    </script>
</body>
</html>

Dieser Code stellt über WebSocket eine Verbindung zum Server her und definiert die Verarbeitungsfunktionen zum Öffnen der Verbindung, zum Empfangen von Nachrichten und zum Schließen der Verbindung. Über Schaltflächen und Textfelder können Benutzer Chatinhalte eingeben und an den Server senden.

(3) Implementierung der Chatroom-Funktion
Auf der Serverseite müssen wir etwas Logik hinzufügen, um die Chatroom-Funktion zu implementieren. Ändern Sie den Servercode wie folgt:

<?php
$server = new swoole_websocket_server("0.0.0.0", 9501);

$server->on('open', function ($server, $request) {
    echo "new connection open: ".$request->fd."
";
});

$server->on('message', function ($server, $frame) {
    echo "received message: ".$frame->data."
";
    
    // 广播消息给所有客户端
    foreach ($server->connections as $fd) {
        $server->push($fd, $frame->data);
    }
});

$server->on('close', function ($ser, $fd) {
    echo "connection close: ".$fd."
";
});

$server->start();
?>

Im geänderten Code sendet der Server beim Empfang einer Nachricht vom Client die Nachricht an alle verbundenen Clients. Auf diese Weise werden alle von Benutzern auf der Chatroom-Seite gesendeten Nachrichten in Echtzeit auf den Seiten anderer Benutzer angezeigt.

Zusammenfassung:
Durch die oben genannten praktischen Fälle haben wir gelernt, wie man mit PHP WebSocket einen einfachen Online-Chatroom implementiert. Mithilfe der Swoole-Erweiterung von PHP können wir problemlos einen auf WebSocket basierenden Server erstellen, um Echtzeit-Kommunikationsfunktionen zu erreichen. Darüber hinaus kann WebSocket in weiteren Szenarien verwendet werden, z. B. zur Echtzeit-Datenanzeige, zur kollaborativen Bearbeitung durch mehrere Personen usw. Ich hoffe, dass dieser Artikel zum Verständnis und zur Anwendung von PHP WebSocket hilfreich sein wird.

Das obige ist der detaillierte Inhalt vonBeispiele für die PHP-WebSocket-Entwicklung: praktische Beispiele für die Implementierung bestimmter Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn