the*_*azz 11 ajax websocket node.js socket.io-1.0
我正在开发一个Web应用程序,我想知道哪种方法应该适合我的项目.
基本上我想向用户显示的是一些通知,这些通知是从对其他服务器的请求中获取的.我的node.js应用程序获取所有信息,然后传播给用户,将副本保存到我的MongoDB中.
这个想法非常简单但是阅读方法我发现了这两种技术:
Ajax:如果服务器上有新内容,客户端将检查所有时间.这可以通过使用jquery ajax get到我的服务器API(每30/60秒)来完成.
Socket.io:客户端连接一次,然后保持永久TCP连接(更实时).
现在我已经解释了情况,我有以下问题:
我不会对ajax提出太多请求吗?想象我想每分钟检查一次服务器,如果我们将应用程序扩展到100个用户,它将每分钟给我100个查询.拥有套接字在系统资源上会"更便宜"吗?
socket.io会成为移动设备的问题吗?带宽和表现.服务器的响应始终是JSON格式的信息.
我读到now.js可以用于此但似乎不再支持该项目,所以不确定是否使用它将是一个好主意.
两种方法的缓存如何?我正在考虑为每个用户创建一个缓存文件,这将由服务器端的node.js更新.我想这可以用ajax很好用但是socket.io怎么样?
socket.io与许多浏览器完全兼容是不是真的?我的应用程序将更专注于移动设备,我认为这可以让我考虑选择ajax.
有建议吗?
我希望这可以清除我的思想和处于相同情况的其他人:)谢谢
jfr*_*d00 16
这里讨论了webSocket和Ajax之间的许多通用权衡:
这里讨论移动设备的一些权衡问题:
Cordova:套接字,PushNotifications还是反复轮询服务器?
简而言之,如果您的数据主要是服务器驱动的,然后需要发送给客户端,并且您希望客户端看到新数据时具有相当好的延迟,那么这就是webSockets有用的确切问题.webSockets在这种情况下效果最好,因为客户端不需要经常轮询,服务器不需要处理来自大量客户端的常规轮询请求.相反,每个客户端只需设置一个持久的webSocket通信通道,然后服务器可以随时根据需要发送数据.
我不会对ajax提出太多请求吗?想象我想每分钟检查一次服务器,如果我们将应用程序扩展到100个用户,它将每分钟给我100个查询.拥有套接字在系统资源上会"更便宜"吗?
套接字在不活动时需要非常少的资源所以是的,持久的webSocket比许多无限轮询的客户端更有效.这就是发明webSockets的原因,因为它们更能解决这个特殊问题.
socket.io会成为移动设备的问题吗?带宽和表现.服务器的响应始终是JSON格式的信息.
socket.io对带宽或性能不是问题.尝试在后台使用webSockets存在一些移动问题,因为移动设备也尝试进行有源电源管理,尽管客户端轮询也存在类似问题.
两种方法的缓存如何?我正在考虑为每个用户创建一个缓存文件,这将由服务器端的node.js更新.我想这可以用ajax很好用但是socket.io怎么样?
目前还不清楚你对缓存的要求是什么?在webSocket实现中,服务器获取数据,然后将其发送给每个用户.通常不需要服务器端缓存.在客户端Ajax轮询实现中,服务器必须将数据存储在某处并"等待"每个客户端然后请求数据.webSocket或Ajax没有"内置"缓存机制.
socket.io与许多浏览器完全兼容是不是真的?我的应用程序将更专注于移动设备,我认为这可以让我考虑选择ajax.
socket.io与所有具有webSockets的浏览器完全兼容,除了IE9及更早版本之外,它几乎是今天使用的所有东西.如果使用socket.io库,如果webSockets不存在,它将自动回退到长轮询.无论您是进行常规轮询还是webSocket,您的移动问题都可能类似,因为移动设备想要管理长时间运行的东西,但您不想停止轮询.我不认为这是避免webSockets/socket.io的原因.socket.io有一些非常好的自动重新连接逻辑,只要它失去了真正有用的连接.
在移动世界中,我认为你只是发现你不能在后台可靠地进行实时通知,而不使用可以插入设备上的本机"推送"系统的某种原生应用程序组件,因为这是唯一兼具电池效率且与电源管理完全兼容的系统.一旦网页不是前台任务或设备空闲,网页就会进行电源管理.
| 归档时间: |
|
| 查看次数: |
10264 次 |
| 最近记录: |