我在Angular.js和Node.js的初学者,但我已经意识到,有两种可能的方式,使实时应用。 第一是使用Socket.io和另一种是采用的RESTful与setInterval()函数作为客户端解决方案。 我建立了我的应用程序中使用这两种选择,但我不知道为什么它是更好地使用一个,而不是其他。
使用Angular.js(Socket.io替代)我的控制器:
function MyController($scope, socket) {
socket.on('test', function(data){
$scope.data = data;
console.log($scope.data);
});
}
使用Angular.js(RESTful的替代)我的控制器:
function MyController($scope, $http) {
setInterval(function() {
$http.get('/test.json')
.success(function(data, status, headers, config) {
$scope.data = data;
console.log($scope.data);
});
}, 1000);
}
什么是做事的这些方式之间的区别是什么? 提前致谢!
如果你想要一个完全实时的Web应用程序,那么套接字是要走的路。 Socket.io或SockJS都是非常优秀的客户。 他们可能会降低正常时,网络插座,不支持,不过,你可以选择你想使用的交通方式的能力。
你必须建立一个数据订阅服务向所有用户之间传播的更改。 Tower.js和流星都使用被动方式,以及他们使用的模型更改事件侦听器。 这取决于你如何复杂,或有多么强大要这个功能,他们将不同的实现提供。
试图在多个用户同时连接的客户端和服务器端数据同步时,它变得越来越复杂。 我建议你先看看这两个框架,看看它们是如何工作的,并可能复制它的一部分,或者它的所有功能。
根据您的使用情况下,我认为Socket.IO是要走的路。 不过,也有一些注意事项,使用的WebSockets与角度。 我建议你看看博客中前一阵子我在主题中写道: http://briantford.com/blog/angular-socket-io.html
我们必须从使用Ajax发布/订阅实时事件推(使用的WebSocket)和Pubnub之间的替代选择。 尝试做跨不同用户的应用程序的实时通信时,您的角度REST风格的选择是远远不够的。 例如,你有一个团队使用一个项目管理应用程序。 一位团队成员可能会被添加/更新任务,而另一个可能会寻找在同一时间。 更新需要发布,目前谁所有登录的其它用户将认购改变的事件,可以通知。
我们一直在使用Pubnub和它的工作原理非常快,虽然推的技术更好,但不是目前,所有浏览器都支持。
我知道这个问题是AJ和的NodeJS但我觉得使用第三方订阅/发布API使得它更容易管理,因为你没有管理服务器的NodeJS和更大的负载(当你的应用程序进入流行)。 子弹头/ Pubnub是可扩展的,你可以尽可能你想扩展您的应用程序。
这是更好地在你的情况下使用Socket.io。
因为你似乎做很多的互动与backend.If这就像代替查询API中间隔只使用Socket.io。
使用插座将减少对你的工作都后端和客户端,也将使它更容易控制你的基于事件的东西。
Socket.io具有以下优点:
- 少不必要TRAFIC和渲染
- 更低的延迟
- (可以说)清洁器代码
REST具有以下优点:
- 支持所有浏览器和客户端
- 少开连接
- 工程在集群,代理和其他复杂的网络拓扑结构更好
每个点值得它自己的一个长时间的讨论,一些应用程序的特性取决于很多。 但是,如果你按优先级标记它们,你就会明白也许最好是给你的。
文章来源: Which is the better way to build real-time applications using Angular.js and Node.js?