Intereting Posts

Уведомление в реальном времени от веб-сервера к клиенту

Я разрабатываю веб-приложение центра встреч, используя 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> 

Таким образом, вы видите, что он много, если вы используете для этого подходящий язык