Я разрабатываю веб-приложение центра встреч, используя php + mysql. то, что я сейчас пытаюсь сделать, – отправить уведомление, когда назначение было сделано с веб-сервера на клиентские / пользовательские луковицы без сторонних толкателей и без использования запроса JQuery SetInterval AJAX. Я думаю, что SetInterval & AJAX – плохой подход, потому что между клиентом и сервером будет слишком много трафика.
Как я могу реализовать уведомления без опроса сервера с помощью SetInterval?
Вы можете сделать это, используя NodeJs. NodeJS – это javascript на вашем сервере, который подталкивает контент к подключенным клиентам в режиме реального времени.
Он очень прост в использовании и настройке. Вам нужен сервер, посвященный приложению в реальном времени, я использую http://nodejitsu.com .
Серверная сторона
var app = require('http').createServer(handler) , io = require('socket.io').listen(app) , url = require('url') app.listen(8080); function handler (req, res) { // parse URL var requestURL = url.parse(req.url, true); // if there is a message, send it if(requestURL.query.message) sendMessage(decodeURI(requestURL.query.message)); // end the response res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(""); } function sendMessage(message) { io.sockets.emit('notification', {'message': message}); }
Сторона клиента
<script src="socket.io.min.js"></script> <script> var socket = io.connect('http://localhost:8080'); socket.on('notification', function (data) { console.log(data.message); }); </script>
Я добавил простой в использовании пример @intivev ниже, чтобы завершить ответ для будущих читателей
Вы можете использовать WebSockets для этого, Ratchet – это реализация PHP, построенная поверх библиотеки React . Я использовал обе эти библиотеки в производственных приложениях и был более чем счастлив с ними.
Да, использование node.js является опцией и, возможно, лучшей – зависит от вашей текущей ситуации.
Энтони.
Я чувствую, что вы выбрали неправильный язык для этой цели (PHP), может быть выход, чтобы сделать это на PHP, но я уверен, что это будет скрученный. Я рекомендую использовать node.js для этой цели, так как вы можете использовать pushing-уведомления клиенту намного проще
Серверная сторона
var app = require('http').createServer(handler) , io = require('socket.io').listen(app) , url = require('url') app.listen(8080); function handler (req, res) { // parse URL var requestURL = url.parse(req.url, true); // if there is a message, send it if(requestURL.query.message) sendMessage(decodeURI(requestURL.query.message)); // end the response res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(""); } function sendMessage(message) { io.sockets.emit('notification', {'message': message}); }
Сторона клиента
<script src="socket.io.min.js"></script> <script> var socket = io.connect('http://localhost:8080'); socket.on('notification', function (data) { console.log(data.message); }); </script>
Таким образом, вы видите, что он много, если вы используете для этого подходящий язык