Я использую Pusher для создания уведомлений в реальном времени в HTML5. Код, который я использую, позволяет пользователю написать текст в поле и нажать кнопку «Вперед!» Если этот флажок установлен, другие активные пользователи получат это текстовое сообщение.
У Pusher также есть консоль Debug для проверки всех соединений и передаваемых данных.
У меня проблема в том, что когда я нажимаю на кнопку, уведомление отправляется, я вижу его в консоли отладки, но он не содержит никакого текста, это пустой JSON и ничего не показывается другим пользователям.
Это JSON, который отправляется:
{
"message": null
}
У меня есть основные файлы. Index.html, расположенный по адресу: mywebsite.com/notifications/index.html
Вот:
<html>
<head>
<title>Realtime Notifications</title>
<script src="//js.pusher.com/2.2/pusher.min.js" type="text/javascript"></script>
<script src="//code.jquery.com/jquery-2.1.3.min.js" type="text/javascript"></script>
</head>
<body>
<div class="notification"></div>
<input class="create-notification" placeholder="Send a notification :)"></input>
<button class="submit-notification">Go!</button>
<script>
var pusher = new Pusher('MY APP KEY');
var notificationsChannel = pusher.subscribe('notifications');
notificationsChannel.bind('new_notification', function(notification){
var message = notification.message;
$('div.notification').text(message);
});
var sendNotification = function(){
// get the contents of the input
var text = $('input.create-notification').val();
// POST to our server
$.post('http://mywebsite.com/notifications/notification', {message: text}).success(function(){
console.log('Notification sent!');
});
};
$('button.submit-notification').on('click', sendNotification);
</script>
</body>
</html>
и index.php в: mywebsite.com/notifications/notification/index.php
вот код:
<html>
<head>
<title> notification index </title>
</head>
<body>
<?php
require(dirname(__FILE__).'/../vendor/autoload.php');
$pusher = new Pusher('MY APP KEY', 'MY APP SECRET', 'MY APP ID');
// trigger on 'notifications' an event called 'new_notification' with this payload:
$text = $_POST['message'];
$data['message'] = $text;
$pusher->trigger('notifications', 'new_notification', $data);
?>
</body>
</html>
Код работал до добавления функции sendNotification. Так что это определенно не проблема, связанная с отсутствующими библиотеками, зависимостями и т. Д.
Может ли это быть проблема, связанная с разрешением?
Заранее спасибо за помощь.
Проблема найдена. Он находится в index.html, когда я пытаюсь отправить сообщение на сервер:
// POST to our server
$.post('http://mywebsite.com/notifications/notification'
Мне нужно было указать index.php:
// POST to our server
$.post('http://mywebsite.com/notifications/notification/index.php'
Мысль, что это собирается найти это автоматически 🙂
Других решений пока нет …