哪个是更好的方式来建立使用Angular.js和Node.js的实时应用程序?(Which is t

2019-07-17 16:31发布

我在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);

}

什么是做事的这些方式之间的区别是什么? 提前致谢!

Answer 1:

如果你想要一个完全实时的Web应用程序,那么套接字是要走的路。 Socket.io或SockJS都是非常优秀的客户。 他们可能会降低正常时,网络插座,不支持,不过,你可以选择你想使用的交通方式的能力。

你必须建立一个数据订阅服务向所有用户之间传播的更改。 Tower.js和流星都使用被动方式,以及他们使用的模型更改事件侦听器。 这取决于你如何复杂,或有多么强大要这个功能,他们将不同的实现提供。

试图在多个用户同时连接的客户端和服务器端数据同步时,它变得越来越复杂。 我建议你先看看这两个框架,看看它们是如何工作的,并可能复制它的一部分,或者它的所有功能。



Answer 2:

根据您的使用情况下,我认为Socket.IO是要走的路。 不过,也有一些注意事项,使用的WebSockets与角度。 我建议你看看博客中前一阵子我在主题中写道: http://briantford.com/blog/angular-socket-io.html



Answer 3:

我们必须从使用Ajax发布/订阅实时事件推(使用的WebSocket)和Pubnub之间的替代选择。 尝试做跨不同用户的应用程序的实时通信时,您的角度REST风格的选择是远远不够的。 例如,你有一个团队使用一个项目管理应用程序。 一位团队成员可能会被添加/更新任务,而另一个可能会寻找在同一时间。 更新需要发布,目前谁所有登录的其它用户将认购改变的事件,可以通知。

我们一直在使用Pubnub和它的工作原理非常快,虽然推的技术更好,但不是目前,所有浏览器都支持。

我知道这个问题是AJ和的NodeJS但我觉得使用第三方订阅/发布API使得它更容易管理,因为你没有管理服务器的NodeJS和更大的负载(当你的应用程序进入流行)。 子弹头/ Pubnub是可扩展的,你可以尽可能你想扩展您的应用程序。



Answer 4:

这是更好地在你的情况下使用Socket.io。

因为你似乎做很多的互动与backend.If这就像代替查询API中间隔只使用Socket.io。

使用插座将减少对你的工作都后端和客户端,也将使它更容易控制你的基于事件的东西。



Answer 5:

Socket.io具有以下优点:

  • 少不必要TRAFIC和渲染
  • 更低的延迟
  • (可以说)清洁器代码

REST具有以下优点:

  • 支持所有浏览器和客户端
  • 少开连接
  • 工程在集群,代理和其他复杂的网络拓扑结构更好

每个点值得它自己的一个长时间的讨论,一些应用程序的特性取决于很多。 但是,如果你按优先级标记它们,你就会明白也许最好是给你的。



文章来源: Which is the better way to build real-time applications using Angular.js and Node.js?