Heim > Backend-Entwicklung > PHP-Tutorial > So verwenden Sie WebSocket für die Echtzeitkommunikation in der PHP-Entwicklung

So verwenden Sie WebSocket für die Echtzeitkommunikation in der PHP-Entwicklung

WBOY
Freigeben: 2023-06-25 19:20:02
Original
847 Leute haben es durchsucht

Mit der zunehmenden Entwicklung des Internets ist Echtzeitkommunikation zu einem untrennbaren Teil von uns geworden. Als eines der HTTP-Upgrade-Protokolle ist WebSocket basierend auf dem TCP-Protokoll effizienter und stabiler. Wie kann in der PHP-Entwicklung WebSocket verwendet werden, um Echtzeitkommunikation zu erreichen? In diesem Artikel wird es unter folgenden Gesichtspunkten vorgestellt.

Einführung in WebSocket

WebSocket ist ein Netzwerkprotokoll, das auf Basis des TCP-Protokolls kommuniziert und normalerweise für die Echtzeitkommunikation verwendet wird. Im Gegensatz zum HTTP-Protokoll kann WebSocket eine lange Verbindung zwischen dem Server und dem Client aufrechterhalten, eine Vollduplex-Kommunikation erreichen und eine höhere Datenübertragungseffizienz erzielen. Beim herkömmlichen HTTP-Protokoll erhält der Client Daten vom Server über eine Anfrage, und der Server antwortet auf die Anfrage und gibt die Daten dann an den Client zurück. Auch wenn keine Datenübertragung erfolgt, muss die TCP-Verbindung aufrechterhalten werden. In WebSocket muss die Verbindung während des Handshakes nur einmal hergestellt werden, und die nachfolgende Datenübertragung kann auf dieser Verbindung basieren, ohne dass jedes Mal eine Verbindung hergestellt werden muss.

Verwenden Sie die Swoole-Erweiterung

Swoole ist ein leistungsstarkes Netzwerkkommunikations-Framework, das für PHP entwickelt wurde. Es unterstützt Coroutinen und asynchrone E/A-Operationen und unterstützt auch das WebSocket-Protokoll. Bei der Verwendung der Swoole-Erweiterung zur Implementierung der WebSocket-Echtzeitkommunikation müssen Sie die von der Swoole-Bibliothek bereitgestellte WebSocket-Serverklasse verwenden.

Swoole installieren

# CentOS 6 系统下安装
sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
sudo rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
sudo yum install php56w php56w-opcache php56w-devel php56w-pear gcc automake autoconf make
sudo pecl install swoole
Nach dem Login kopieren

WebSocket-Server erstellen

<?php
// 创建 WebSocket 服务器对象,监听 127.0.0.1:9502 端口
$server = new SwooleWebSocketServer("127.0.0.1", 9502);

// 监听 WebSocket 连接打开事件
$server->on('open', function (SwooleWebSocketServer $server, $request) {
    echo "client {$request->fd} opened
";
});

// 监听 WebSocket 消息事件
$server->on('message', function (SwooleWebSocketServer $server, $frame) {
    echo "received message: {$frame->data}
";
    $server->push($frame->fd, "received message: {$frame->data}");
});

// 监听 WebSocket 连接关闭事件
$server->on('close', function ($ser, $fd) {
    echo "client {$fd} closed
";
});

// 启动服务器
$server->start();
Nach dem Login kopieren

Im obigen Code erstellen wir zunächst ein WebSocket-Serverobjekt zum Abhören. Verwenden Sie dann die Methode $server->on(), um das Öffnen der WebSocket-Verbindung, Nachrichten, das Schließen der Verbindung bzw. andere Ereignisse abzuhören. Nach dem Empfang der vom Client gesendeten Nachricht gibt der Server den Nachrichteninhalt an die Konsole aus und sendet die Nachricht über die Methode $server->push() an den Client zurück. $server->on() 方法分别监听 WebSocket 的连接打开、消息以及连接关闭等事件。在收到客户端的发送的消息后,服务器会将消息内容打印到控制台中,并通过 $server->push() 方法将消息发送回客户端。

前端页面实现

创建 WebSocket 服务器后,我们需要在前端页面上编写 JavaScript 代码,创建 WebSocket 对象,并进行事件监听和消息发送等操作。具体代码如下:

// 创建 WebSocket 对象
var ws = new WebSocket("ws://127.0.0.1:9502");

// 监听 WebSocket 连接打开事件
ws.onopen = function() {
    console.log("WebSocket connection established");
};

// 监听 WebSocket 消息事件
ws.onmessage = function(event) {
    console.log("received message: " + event.data);
};

// 监听 WebSocket 连接关闭事件
ws.onclose = function() {
    console.log("WebSocket connection closed");
};

// 发送消息
ws.send("hello world");
Nach dem Login kopieren

在上述代码中,我们使用 new WebSocket("ws://127.0.0.1:9502") 创建 WebSocket 对象,并分别通过 ws.onopen()ws.onmessage()ws.onclose() 方法进行事件监听。在页面中发送消息时,可以通过 ws.send()

Implementierung der Front-End-Seite

Nachdem wir den WebSocket-Server erstellt haben, müssen wir JavaScript-Code auf die Front-End-Seite schreiben, WebSocket-Objekte erstellen und eine Ereignisüberwachung und das Senden von Nachrichten durchführen. Der spezifische Code lautet wie folgt:

rrreee

Im obigen Code verwenden wir new WebSocket("ws://127.0.0.1:9502"), um ein WebSocket-Objekt zu erstellen, und übergeben Methoden ws.onopen( ), ws.onmessage() und ws.onclose() zur Ereignisüberwachung. Wenn Sie eine Nachricht auf der Seite senden, können Sie die Nachricht über die Methode ws.send() an den Server senden. 🎜🎜Fazit🎜🎜Dieser Artikel bietet eine kurze Einführung in die Verwendung von WebSocket für die Echtzeitkommunikation in der PHP-Entwicklung, einschließlich der Implementierung der Swoole-Erweiterung und der Front-End-Seite. Im tatsächlichen Einsatz muss es auch entsprechend den spezifischen Geschäftsanforderungen angepasst und verbessert werden. Ich hoffe, dieser Artikel kann Ihnen nützliche Hinweise und Hilfe bieten. 🎜

Das obige ist der detaillierte Inhalt vonSo verwenden Sie WebSocket für die Echtzeitkommunikation in der PHP-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage