Heim > Datenbank > Redis > Hauptteil

Implementieren Sie Abonnementnachrichten von Redis und leiten Sie sie an den WebSocket-Client weiter

藏色散人
Freigeben: 2020-06-13 16:08:22
nach vorne
2906 Leute haben es durchsucht

Implementieren Sie Abonnementnachrichten von Redis und leiten Sie sie an den WebSocket-Client weiter

Die Redis-Erweiterung von PHP blockiert E/A. Bei Verwendung des Abonnement-/Veröffentlichungsmodus wird der gesamte Prozess blockiert. Daher muss es mit dem asynchronen SwooleRedis-Client implementiert werden.

Beispielcode

$server = new swoole_websocket_server("0.0.0.0", 9501);
$server->on('workerStart', function ($server, $workerId) {
    $client = new swoole_redis;
    $client->on('message', function (swoole_redis $client, $result) use ($server) {
        if ($result[0] == 'message') {
            foreach($server->connections as $fd) {
                $server->push($fd, $result[1]);
            }
        }
    });
    $client->connect('127.0.0.1', 6379, function (swoole_redis $client, $result) {
        $client->subscribe('msg_0');
    });
});
$server->on('open', function ($server, $request) {
});
$server->on('message', function (swoole_websocket_server $server, $frame) {
    $server->push($frame->fd, "hello");
});
$server->on('close', function ($serv, $fd) {
});
$server->start();
Nach dem Login kopieren

Implementierungsprozess

Der SwooleRedis-Client wird erstellt, wenn der Prozess startet (onWorkerStart) und mit verbunden Redis-Server

Nachdem die Verbindung erfolgreich hergestellt wurde, abonnieren Sie die Nachricht des Themas msg_0

Wenn eine neue Nachricht vorliegt, löst SwooleRedis den Rückruf des onMessage-Ereignisses aus

Verwenden Sie $server in dieser Rückruffunktion ->Verbindungen durchlaufen alle Verbindungen auf dem Server und senden Nachrichten

Verwandte Empfehlungen: „rEDIS-Tutorial

Das obige ist der detaillierte Inhalt vonImplementieren Sie Abonnementnachrichten von Redis und leiten Sie sie an den WebSocket-Client weiter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
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