集成NodeJS实时与现有的PHP应用程序


Integrating NodeJS Realtime with existing PHP Application

我有一个现有的PHP应用程序在Apache服务器上运行。

问题,它是可能嵌入说插座。IO客户端JS通过"Proxy-Pass"到NodeJS服务器?

假设我在DB中保存了PHP的键值对,并同时将该消息发送给连接到该通道的每个人,即我刚刚保存的值。

如果我使用NodeJS和Socket。IO/Faye我会将客户端JS嵌入到Apache提供的页面中。但从本质上讲,这个脚本是从Proxy-Pass到NodeJS的。

如果能给我点提示就太好了。

谢谢

这里有一个类似的问题:

访问套接字。

你可以使用Apache来实现这个,但是我认为连接到Socket会更好。直接IO或使用更好的代理,如HAProxy: HAProxy + WebSocket disconnect

我会选择HAProxy并使用端口,例如4000,特别是对于Socket。IO和端口843用于Flash-WebSockets (Socket。IO将检查浏览器中是否有WebSockets可用,如果没有,SIO可以将传输更改为Flash-WebSockets;提供您的传输顺序是WS本机,WS Flash等):https://gist.github.com/1014904(检查HAProxy的配置那里的端口843)。

选择HAProxy的原因是,当我需要处理大流量时,我可以在多台机器上使用多个进程,而HAProxy在这方面非常擅长。

第一个想法是创建一个Socket。io客户端,嗯,这并不难,除了你会忙着破解Socket。它不是标准的(WebSocket是标准的)。我以前做过类似的事情,但那是浪费时间。

因为Node.Js有一个共享的作用域(全局作用域),而且它是一个单进程应用程序,你总是可以创建一个专用的HTTP服务器来与Socket.io进行非实时交互:

var app = require('http').createServer(function S(req, res){
    res.writeHead(200, {
        'Content-Type': 'text/html'
    });
    res.end('');

    var i;
    var sockets = io.sockets.sockets;
    for (i in sockets) {
        if (sockets.hasOwnProperty(i)) {
            var socket = sockets[i];
            // you have res, and socket so so something with it!
            socket.emit('myevent', {msg: "json is cool :)"});
        }
    }
});
var io = require('socket.io').listen(app);
app.listen(80);
io.sockets.on('connection', function (socket) {
    socket.on('theirsevent', function (data) {
    });
});

恕我直言,这比用更多模块修改apache要好得多。这甚至可以在Python和。net中工作,因为它是HTTP。

我认为这是更简单/干净的任何其他解决方案. ...除非有一些用例这个解决方案不适合。