Как работать в Centrifugo с приватными каналами?

Кто работал с Centrifugo как подписываться на приватные каналы. Написал небольшой код для теста, но сообщения в тестовый чат всё равно не приходят. Если делать подписку на простой не приватный канал "channel1" то всё работает.
<?php
require __DIR__ . '/vendor/autoload.php';
$client = new \phpcent\Client("http://centrifugal.test:8000/api");
$client->setApiKey("b7a7dc68-c285-47ab-b1e5-25a46b9d1050");
$token = $client->setSecret("60b6000f-c1a4-472b-bb2c-1ec8eee34717")->generatePrivateChannelToken('1', '$channel1');
$client->subscribe('$channel1', $token);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>centrifugal.test</title>
</head>
<body style="width: 100%">
<div style="width: 100%;display: flex; justify-content: center">
    <div style="width: 800px;height: 400px; border: 1px black solid; display: flex;flex-direction: column;justify-content: space-between">
        <div class="log">
            <ol id="log-text"></ol>
        </div>
        <div style="width: inherit">
            <input type="text" id="input_send" style="width: inherit; height: 40px">
        </div>
    </div>
</div>
<div id="counter"></div>
</body>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/centrifugal/centrifuge-js@2.8.4/dist/centrifuge.min.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $('#input_send').on('keyup', function (event) {
            if (event.keyCode === 13) {
                $.ajax({
                    url: 'http://centrifugal.test/server.php',
                    method: 'post',
                    data: {'publish': $(this).val()},
                    success: function (data) {
                        console.log(data);
                    }
                })
            }
        })
    });

    const container = document.getElementById('counter')
    const centrifuge = new Centrifuge("ws://centrifugal.test:8000/connection/websocket");
    centrifuge.setToken("<?= $token ?>");
    centrifuge.on('connect', function(ctx) {
        console.log("connected", ctx);
    });
    centrifuge.on('disconnect', function(ctx) {
        console.log("disconnected", ctx);
    });
    centrifuge.connect();
</script>
</html>

server.php
<?php
require __DIR__ . '/vendor/autoload.php';
$client = new \phpcent\Client("http://centrifugal.test:8000/api");
$client->setApiKey("b7a7dc68-c285-47ab-b1e5-25a46b9d1050");
if (isset($_POST['publish'])) {
    $client->publish('$channel1', $_POST['publish']);
}

Вот здесь смотрю результат.
61f68d1bc3970082770210.png
  • Вопрос задан
  • 525 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы