Heim  >  Artikel  >  Backend-Entwicklung  >  Implementieren Sie den WebSocket-Dienst mit PHP

Implementieren Sie den WebSocket-Dienst mit PHP

WBOY
WBOYOriginal
2023-06-22 11:41:247204Durchsuche

Mit der Entwicklung des Internets wird die WebSocket-Technologie immer häufiger eingesetzt. Die WebSocket-Technologie kann eine bidirektionale Echtzeitkommunikation realisieren, eignet sich für einige Anwendungsszenarien wie Instant Messaging und Spiele und kann ein besseres Benutzererlebnis bieten. In diesem Artikel wird erläutert, wie Sie den WebSocket-Dienst mit PHP implementieren.

1. Einführung in WebSocket
WebSocket ist ein neues Protokoll für die Vollduplex-Kommunikation über eine einzelne TCP-Verbindung. Es unterstützt Echtzeitkommunikation, hat eine geringere Latenz als HTTP und kann große Mengen übertragen von Daten. Durch die Verwendung von WebSocket kann eine Echtzeitkommunikation erreicht und gleichzeitig der Server-Overhead reduziert und Netzwerkbandbreite gespart werden.

2. WebSocket-Implementierungsmethode

  1. Server

(1) WebSocket-Server erstellen:

// 创建WebSocket服务器
$server = new swoole_websocket_server("0.0.0.0", 9502);

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

// 监听WebSocket消息事件
$server->on('message', function (swoole_websocket_server $server, $frame) {
    // 处理接收到的消息
    $message = "server received message: {$frame->data}
";
    // 向WebSocket客户端发送消息
    $server->push($frame->fd, $message);
});

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

// 启动WebSocket服务器
$server->start();

(2) Server-Push-Nachricht:

// 向WebSocket客户端发送消息
$server->push($frame->fd, $message);
  1. Client

(1) WebSocket-Verbindung erstellen:

// 创建WebSocket连接
var ws = new WebSocket("ws://localhost:9502");

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

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

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

( 2) Der Client sendet eine Nachricht:

// 向WebSocket服务器发送消息
ws.send("hello");

3. Detaillierte Erläuterung des Implementierungsprozesses

Jetzt stellen wir jeden Teil des obigen Codeblocks im Detail vor.

  1. Server

(1) Erstellen Sie einen WebSocket-Server:

// 创建WebSocket服务器
$server = new swoole_websocket_server("0.0.0.0", 9502);

Dieser Code erstellt einen WebSocket-Server und gibt die IP-Adresse als 0.0.0.0 und den Port als 9502 an.

(2) Auf WebSocket-Verbindungsereignisse achten:

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

Wenn ein WebSocket-Client verbunden ist, wird das „Öffnen“-Ereignis ausgelöst. $request ist hier ein Objekt, das einige Informationen über die Clientverbindung enthält, z. B. die IP-Adresse des Clients, die Verbindungszeit usw.

(3) WebSocket-Nachrichtenereignisse abhören:

// 监听WebSocket消息事件
$server->on('message', function (swoole_websocket_server $server, $frame) {
    // 处理接收到的消息
    $message = "server received message: {$frame->data}
";
    // 向WebSocket客户端发送消息
    $server->push($frame->fd, $message);
});

Wenn der WebSocket-Client eine Nachricht sendet, wird das Ereignis „Nachricht“ ausgelöst. Der $frame ist hier ein Objekt, das einige Informationen über die empfangene Nachricht enthält, z. B. den Inhalt der Nachricht, die Sendezeit usw.

(4) Auf Ereignisse zum Schließen von WebSocket achten:

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

Wenn der WebSocket-Client die Verbindung schließt, wird das Ereignis „Schließen“ ausgelöst. $fd ist hier die eindeutige Kennung der Client-Verbindung.

(5) Starten Sie den WebSocket-Server:

// 启动WebSocket服务器
$server->start();

Verwenden Sie die start()-Methode, um den WebSocket-Server zu starten und auf Clientverbindungen und Nachrichten zu warten.

(6) Server-Push-Nachricht:

// 向WebSocket客户端发送消息
$server->push($frame->fd, $message);

Verwenden Sie die Methode push(), um eine Nachricht an den angegebenen Client zu senden. $frame->fd ist die eindeutige Kennung der Clientverbindung und $message ist der Inhalt der zu sendenden Nachricht.

  1. Client

(1) WebSocket-Verbindung erstellen:

// 创建WebSocket连接
var ws = new WebSocket("ws://localhost:9502");

Dieser Code erstellt eine WebSocket-Verbindung und gibt die URL als ws://localhost:9502 an. Unter diesen repräsentiert ws den Protokolltyp, localhost repräsentiert die IP-Adresse des WebSocket-Servers und 9502 repräsentiert die Nummer des Überwachungsports.

(2) WebSocket-Verbindungsereignisse abhören:

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

Wenn die WebSocket-Verbindung erfolgreich ist, wird das „Open“-Ereignis ausgelöst. Hier verwenden wir die Methode console.log(), um eine Nachricht auszugeben.

(3) WebSocket-Nachrichtenereignisse abhören:

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

Wenn der WebSocket-Client eine Nachricht empfängt, wird das Ereignis „Nachricht“ ausgelöst. Hier verwenden wir die Methode console.log(), um eine Nachricht auszugeben.

(4) Hören Sie sich das WebSocket-Schließereignis an:

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

Wenn die WebSocket-Verbindung geschlossen wird, wird das „close“-Ereignis ausgelöst. Hier verwenden wir die Methode console.log(), um eine Nachricht auszugeben.

(5) Der Client sendet eine Nachricht:

// 向WebSocket服务器发送消息
ws.send("hello");

Verwenden Sie die send()-Methode, um eine Nachricht an den WebSocket-Server zu senden. Hier senden wir eine Zeichenfolge „Hallo“.

4. Zusammenfassung

Dieser Artikel stellt vor, wie man PHP zur Implementierung von WebSocket-Diensten verwendet. Die WebSocket-Technologie wird häufig in der Echtzeitkommunikation, bei Spielen und in anderen Bereichen eingesetzt. Sie weist eine geringere Latenz als HTTP auf und kann ein besseres Benutzererlebnis bieten. Durch die Verwendung von PHP zur Implementierung von WebSocket-Diensten können Sie schnell und einfach Echtzeitkommunikation erreichen, den Server-Overhead reduzieren und Netzwerkbandbreite sparen.

Das obige ist der detaillierte Inhalt vonImplementieren Sie den WebSocket-Dienst mit PHP. 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