哪个是使用Angular.js和Node.js构建实时应用程序的更好方法?

Mar*_*nez 10 sockets rest node.js socket.io angularjs

我是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);
  });

}
Run Code Online (Sandbox Code Playgroud)

我的控制器使用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);

}
Run Code Online (Sandbox Code Playgroud)

这些做事方式之间会有什么不同?提前致谢!

Dan*_*iel 8

如果您想要一个完全实时的Web应用程序,那么套接字是可行的方法.Socket.io或SockJS都是非常好的客户.当不支持Web套接字时,它们可以优雅地降级,但是,您可以选择要使用的传输方法.

您必须构建数据订阅服务,以便在所有用户之间传播更改.Tower.js和Meteor都使用被动方法,他们在模型更改时使用事件监听器.根据您希望此功能的复杂程度或强大程度,它们将是不同的可用实现.

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


btf*_*ord 6

根据您的用例,我认为Socket.IO是可行的方法.但是,使用带有Angular的WebSockets有一些注意事项.我建议你看看我刚才写的关于这个主题的博客文章:http://briantford.com/blog/angular-socket-io.html