我正在设计一个长轮询应用程序,可以非常快速地向很多用户广播小的变化。该应用程序将与运行相当标准的cms的网站串联运行。它们都将在一台服务器上运行,并且数据库也是如此。
我非常喜欢LAMP环境,我绝对是开发人员,而不是系统管理员。那说我不怕尝试一些新东西。
我花了一天时间研究我的选择,我希望人们可以回答一些问题并给我一些建议。
我把它缩小到这些:
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非常熟悉,但我只使用Node而且我从未安装过Nginx。
如果有人需要,我会很乐意提供澄清。
答案 0 :(得分:3)
我会使用选项C:并建议选项D:
选项D:
我们目前使用选项D的前两部分,来自LAMP背景,目前正在实施Node.js以服务我们的一些(系统征税)实时应用程序。 HAProxy正是如此:将流量代理到我的所有后端服务器,而不是让Nginx执行它。原因是,我们有许多后端HTTP / TCP /其他服务器,我们需要对这些服务器进行冗余和自动故障转移。 LB易于实现并且运行良好。
到目前为止,效果非常好。就个人而言,由于缺乏文档,节点学习曲线到目前为止一直很困难,但那里有一个非常有活力的社区。 p>希望这有帮助。
答案 1 :(得分:1)
我个人只会使用Node.js.您可以将新信息推送到所有可用的客户端,而不是长轮询。 Node.JS在提供实时内容时非常快,并且能够在一个包中完成所有操作。此外,客户端和服务器端使用javascript编写,使其更易于开发,调试和交付。作为开发人员,您可以看到它的好处。
以下是使用Node.js和模块express,jade和NowJS的应用程序示例。当然,这也可以与在apache上运行的CMS和为动态内容提供服务的Node.JS组合使用。使用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将占用比应用程序代码更多的行。惊人!