我有一个现有的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。
我认为这是更简单/干净的任何其他解决方案. ...除非有一些用例这个解决方案不适合。