Redis에서 구독 메시지를 구현하고 이를 WebSocket 클라이언트에 전달합니다.

藏色散人
풀어 주다: 2020-06-13 16:08:22
앞으로
2906명이 탐색했습니다.

Redis에서 구독 메시지를 구현하고 이를 WebSocket 클라이언트에 전달합니다.

PHP의 redis 확장 프로그램이 IO를 차단하고 있습니다. 구독/게시 모드를 사용하면 전체 프로세스가 차단됩니다. 따라서 SwooleRedis 비동기 클라이언트를 사용하여 구현해야 합니다.

예제 코드

$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();
로그인 후 복사

구현 프로세스

프로세스가 시작되면(onWorkerStart) SwooleRedis 클라이언트를 생성하고 Redis 서버에 연결합니다.

연결에 성공한 후 msg_0 주제의 메시지를 구독하세요

When 새로운 메시지가 있습니다. SwooleRedis가 onMessage 이벤트 콜백을 트리거할 때

이 콜백 함수에서 $server->connections를 사용하여 서버의 모든 연결을 순회하고 메시지를 보냅니다

관련 권장 사항: "redis tutorial "

위 내용은 Redis에서 구독 메시지를 구현하고 이를 WebSocket 클라이언트에 전달합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿