我正在devise一个长轮询应用程序,可以很快地向很大数量的用户发送小的更改。 该应用程序将与运行相当标准的CMS网站串联运行。 他们都将在一台服务器上运行,并开始数据库。
我来自一个LAMP环境,我绝对是一个开发人员,而不是一个系统pipe理员。 这就是说,我不害怕尝试一些新的东西。
我花了一天时间研究我的select,我希望人们可以回答一些问题,并给我一些build议。
我已经缩小到这些:
A. Apache and php for the website, Node.js for the app B. Nginx and php for both the website and app C. Nginx and php for website, Nginx and Node.js for the app
所以问题:
请记住,简单的设置可能是一个因素,我相当适应Apache,但我只使用节点,我从来没有安装Nginx。
如果有人需要,我会很乐意提供澄清。
我会使用选项C:并建议一个选项D:
选项D:
我们目前使用来自LAMP背景的选项D的前两个部分,并且目前正在实施Node.js来为我们的一些(系统赋税)实时应用程序提供服务。 HAProxy正是这样做的:代理流量到所有我的后端服务器,而不是让Nginx这样做。 原因是,我们有许多后端HTTP / TCP /其他服务器,我们需要冗余和自动故障转移到这些服务器。 LB实施简单,运作良好。
到目前为止,效果极佳。 就个人而言,由于缺乏文档,节点学习曲线迄今为止是困难的,但是在那里有一个非常有活力的社区。
希望这可以帮助。
我个人只会使用Node.js. 您可以将新信息推送给所有可用的客户,而不是长时间的投票。 Node.JS在提供实时内容时非常快速,并且能够在一个包中完成所有工作。 另外,客户端和服务器端用JavaScript编写,使开发,调试和交付变得更加容易。 作为开发者,你可以看到这个好处。
这里是一个使用Node.js和模块express,jade和NowJS的应用程序的例子。 当然,这也可以与运行在Apache和Node.JS服务动态内容的CMS组合使用。 与Nginx或节点脚本充当反向代理在这个脚本和Apache之前。
server.js
var express = require('express') , app = express.createserver() , nowjs = require('now') /* configure express server */ //... app.get('/', function(req, res){ res.render('chat') }) var everyone = nowjs.initialize(app) // server scoped function called by single client everyone.now.distributeMsg = function(msg){ // Client scoped function of every connected client this.now.receiveMsg(msg) } app.listen(3000)
chat.jade
!!! html head script(type='text/javascript', src='/nowjs/now.js') body #log input#entry(type='text') input#submit(type='button') script $(function(){ $('#submit').click(function(){ now.distributeMsg($('#entry').val()) }) now.receiveMsg = function(msg){ $('#log').append('<div>' + msg + '</div>') } })
是的,它真的很简单,不需要更多的代码行来把它变成一个全功能的聊天应用程序。 事实上,你的标记和CSS将比应用程序代码占用更多的行。 惊人!