Я делаю несколько тестов на Pusher, и я создал метод аутентификации для частных каналов, следующих за документами, и auth работает, как и ожидалось.
(docs: https://pusher.com/docs/authenticating_users#implementing_endpoints)
Это сценарий, который я использую для подписки на каналы с использованием JSONP:
<script>
Pusher.logToConsole = true;
var pusher = new Pusher('<%= ENV['PUSHER_KEY'] %>', {
cluster: 'us2',
encrypted: true,
authTransport: 'jsonp',
authEndpoint: '/pusher_jsonp_auth',
});
var channel = pusher.subscribe("private-channel_test");
channel.bind('pusher:subscription_succeeded', function() {
console.log("PVT channel");
});
channel.bind('greet', function(data) {
console.log(data);
});
</script>
Канал был правильно подписан, ОК! Сообщения, которые у меня есть на консоли браузера:
Pusher : State changed : connecting -> connected with new socket ID 163.232688
pusher.min.js:8 Pusher : Event sent : {"event":"pusher:subscribe","data":{"auth":"1e38f997c10796c55093:4e9e160585dc7c49da68da98e281860c1461ddf7c1b37688aa2fde581b482093","channel":"private-channel_test"}}
pusher.min.js:8 Pusher : Event recd : {"event":"pusher_internal:subscription_succeeded","data":{},"channel":"private-channel_test"}
home:35 PVT channel
На бэкэнд я вызвал событие на этот канал с помощью socket_id: используя драгоценный камень рубинового толкателя, я отправил такие сообщения:
Pusher.trigger('private-channel_test', 'greet', {greet: 'hello world'}, {socket_id: "163.232688"})
События отправляются OK в Pusher, как показано на консоли Debug:
Но события не принимаются в интерфейсе, и функция привязки никогда не запускается при использовании socket_id
и Pusher рассматривает эти события как API Messages
Кто-нибудь знает, что я делаю неправильно?
Связан ли этот код или мое понимание так называемых Private Channels
не так?
Похоже, вы исключаете своего абонента из трансляции, как описано здесь.
Попробуйте удалить четвертый аргумент из вашего триггерного вызова:
Pusher.trigger('private-channel_test', 'greet', {greet: 'hello world'})