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

Had*_*i.M 7 php jquery notifications real-time

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

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

MDD*_*DDY 13

您可以使用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});
}
Run Code Online (Sandbox Code Playgroud)

客户端

<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>
Run Code Online (Sandbox Code Playgroud)

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


Ant*_*ing 5

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

是的,使用 node.js 是一种选择,也许是更好的选择 - 取决于您当前的情况。

安东尼.