Pusher не перехватывает сработавшее событие, поскольку с 6 сентября 2018 года произошла смена TLS.
Он не выдает ни одной ошибки на консоли, когда я открываю страницу, содержащую клиентский JavaScript-код пушера, он показывает, что каналы подключены к серверу-пушеру, но когда я запускаю любой из них, он не отвечает и не выдает никакой ошибки. Просто это не вызов обратного вызова события связывания вообще.
Вот уменьшенный файл pusher.js, который я включил.
<script src="https://js.pusher.com/4.3/pusher.min.js"></script>
И это код события JS на стороне клиента.
var notificationsWrapper = $('.dropdown-notifications');
var notificationsToggle = notificationsWrapper.find('a[data-toggle]');
var notificationsCountElem = notificationsToggle.find('i[data-count]');
var notificationsCount = parseInt(notificationsCountElem.data('count'));
var notifications = notificationsWrapper.find('ul.dropdown-menu');
if (notificationsCount <= 0) {
notificationsWrapper.hide();
}
// Enable pusher logging - don't include this in production
Pusher.logToConsole = true;
var pusher = new Pusher('AppKey', {
cluster: 'ap2',
forceTLS: true
});
// Subscribe to the channel we specified in our Laravel Event
var channel = pusher.subscribe('subscribed');
channel.bind('pusher:subscription_succeeded', function(members) {
console.log('subscribed successful') ;
});
channel.bind('pusher:subscription_error', function(status) {
console.log('subscribed error: '+ status) ;
});
channel.bind('theEvent', function(data) {
var existingNotifications = notifications.html();
var avatar = Math.floor(Math.random() * (71 - 20 + 1)) + 20;
var newNotificationHtml = `
<li class="notification active">
<div class="media">
<div class="media-left">
<div class="media-object">
<img src="https://api.adorable.io/avatars/71/`+avatar+`.png" class="img-circle" alt="50x50" style="width: 50px; height: 50px;">
</div>
</div>
<div class="media-body">
<strong class="notification-title">`+data.type+`</strong>
<!--p class="notification-desc">Extra description can go here</p-->
<div class="notification-meta">
<small class="timestamp">`+data.date_time+`</small>
</div>
</div>
</div>
</li>
`;
notifications.html(newNotificationHtml + existingNotifications);
notificationsCount += 1;
notificationsCountElem.attr('data-count', notificationsCount);
notificationsWrapper.find('.notif-count').text(notificationsCount);
notificationsWrapper.show();
$.playSound('/notification/notification.mp3') ;
});
Здесь я вызываю триггер в контроллере laravel.
$pusher = HomeController::getPusher() ;
$pusher->trigger('subscribed', 'theEvent', $callBack);
Эти две строки находятся в функции, которая вызывается, если конкретный маршрут вызывается и выполняется до того, как контроллер откроет представление. и экземпляр Pusher создается со ссылкой на Home Controller. и обе функции маршрута и ниже функции толкателя находятся в Home Controller.
public function getPusher() {
$options = array(
'cluster' => 'ap2',
'useTLS' => true
);
$pusher = new Pusher(
'AppKey',
'AppSecret',
'AppId',
$options
);
return $pusher ;
}