我正在寻找一种技术,可以让我创建一个实时的网络应用程序跟踪系统和聊天.
如果您考虑并决定不使用它,您使用了什么?
记忆Node.js的优势来自于它能够保持大量连接的开放和闲置.例如Apache需要连接限制(有时它低至20个并发连接,具体取决于您的服务器环境),因为它为每个连接分配2 MB内存,Node.js不需要. Apache也不喜欢因为这个问题而保持连接打开,并且保持连接打开变得麻烦.
节点应用程序被编程为单个线程(尽管在后台它使用线程进行各种阻塞操作,但不是基于每个连接).如果您已经在Erlang中编程,您可能知道如何解放其他代理(或连接)正在做什么,同时仍然能够在(虚拟)实例之间共享数据而无需任何额外的努力.
理论上,Node可以处理与系统上允许的最大文件描述符/套接字数一样多的连接.在windows中(使用cygwin)这大约是65536,而在unix上我打赌更多是可能的,虽然理论上无限制(服务器端在端口80上,65536个连接可以处理到每个目的地).在Apache中,这甚至会在遇到2000个用户之前导致内存分配问题.
实际上,这些只是数字,它们受到许多其他因素的影响,例如您的应用程序实际处理的数据量可以传递到给定的子集(甚至所有)连接.更现实的估计是,它可以处理20-25,000个具有平均活动的用户而没有任何明显的滞后.我知道可以处理这么多并发用户的唯一纯单服务器设置是用C编程的IRC服务器,尽管可能还有一些Web服务器(如nginx)可以处理它.
性能
Node使用谷歌的V8 JavaScript引擎,这意味着它的速度很快,而且每周都会变得更快.
Node的一个优点是它使用异步I / O,因此当一个用户必须等待从磁盘或数据库调用中读取文件时,节点将其放在后台(记住我说它在后台使用线程) )让我们等待,而在主线程中它继续进行下一个任务.这确保它始终保持移动.即使任何给定的用户可能有轻微的延迟,其他用户也不会被它拖延.
socket.io
这是用于通信的库.您可以在http://socket.io找到更多信息
它还附带了一个非常简单的聊天示例,你不禁觉得它很棒.
哦,记得自己尝试Node并根据它做出决定.它对一切都不是很好,但它对很多事情来说都是一个不错的选择.