从Web服务器到客户端保龄球的实时通知

我正在使用php + mysql开发一个约会中心Web应用程序。 我目前要做的是在没有第三方推送器且没有使用jQuery SetInterval AJAX请求的情况下,在从Web服务器到客户端/用户保龄球的预约时发送通知。 我认为SetInterval和AJAX是一种糟糕的方法,因为客户端和服务器之间的流量太大了。

如何在不使用SetInterval轮询服务器的情况下实现通知?

您可以使用NodeJ执行此操作。 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}); } 

客户端

   

我在下面的@intivev中添加了易于使用的示例,以便为将来的读者完成答案

你可以使用WebSockets, Ratchet是一个构建在React库之上的PHP实现。 我在生产应用程序中使用了这两个库,并且对它们非常满意。

是的,使用node.js是一个选项,可能是一个更好的选择 – 取决于您当前的情况。

安东尼。

我觉得你为此目的选择了错误的语言(PHP),在PHP中可能有一种方法可以做到这一点,但我确信它会是一个扭曲的。 我建议将node.js用于此目的,因为使用它可以以更简单的方式完成向客户端推送通知

服务器端

 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}); } 

客户端

   

所以如果你使用合适的语言,你会看到它的很多