AngularJs和套接字服务器

我即将设置我的node.js / socket.io服务器,但由于这是我第一次使用angular,我有几个问题。

问:是否有任何模块可用的angular度,使套接字连接/通信更容易,或者我将不得不build立自己的模块?

问:由于angular的two way databinding在制作套接字服务器时是否应该注意些什么?

我一直在读博客构build一个简单的聊天应用程序使用Angular和Node,但是我正在寻找更多的全球使用套接字,因为它将在我的应用程序的每个页面上使用。

当然

有@btford有一个有名的和stream行的图书馆 。 你只需要将库包含到你的项目中,并build立一个工厂,返回你的帮助者,如addListenerremoveListenerremoveAllListeners ,为你的项目emit ..

 angular.module('myApp', [ 'btford.socket-io', 'myApp.MyCtrl' ]). factory('mySocket', function (socketFactory) { return socketFactory(); }); 

样品

在HTML5 Rocks上也有一个很好的webtutorial,在这里,Node.js(Express)和Angular.js构build了一个简单的应用程序,它们通过Socket.io在两个方向上相互通信。 来源可在Github上find 。

基础知识(来自tutsplus的示例)

基本上,只需使用callback创build一个简单的Node.js侦听器:

 var io = require('socket.io')(8080); io.sockets.on('connection', function (socket) { socket.on('echo', function (data) { socket.emit('echo', data); }); socket.on('echo-ack', function (data, callback) { callback(data); }); }); 

..包括脚本到您的前端应用程序..

 <script src="'angular.min.js"></script> <script src="/socket.io/socket.io.js"></script> <script src="angular-socket.js"></script> <div ng-controller="Ctrl"> <input ng-model="dataToSend"> <button ng-click="emitBasic()">Send</button> <button ng-click="emitACK()">Send (ACK)</button> <div>Server Response: {{ serverResponse }}</div> <div>Server Response (ACK): {{ serverResponseACK }}</div> </div> 

包含模块

 var module = angular.module('socket.io', []); app.controller('Ctrl', function Ctrl($scope, $socket) { $socket.on('echo', function (data) { $scope.serverResponse = data; }); // ……… }); 

有没有可用的angular度,使套接字连接/通信更容易的模块,或者我必须build立自己的模块?

不知道你可以使用什么模块,但是无论你使用什么模块,将它封装到它自己的服务中,这样数据访问就完全与应用程序逻辑和UI分离

有什么我应该知道什么时候做套接字服务器,因为angular度的双向数据绑定?

只要你这样做,你就不必担心双向绑定。 在您的控制器(将范围绑定到视图)中,使用该服务来获取数据并更新范围以正确更新UI。