Angularjs socket.io 服务
Posted
技术标签:
【中文标题】Angularjs socket.io 服务【英文标题】:Angularjs socket.io service 【发布时间】:2014-02-17 19:24:51 【问题描述】:您好,我正在构建一个 angularjs 服务,该服务将通过 socket.io 使用 websockets 与后端 (node.js) 进行通信。我在网上找到了一段 sn-p 代码,但我不太明白它是如何工作的。特别是在“var args = arguments”下的行。帮忙?
angularjs_service.js
app.factory('socket', function ($rootScope)
var socket = io.connect();
return
on: function (eventName, callback)
socket.on(eventName, function ()
var args = arguments;
$rootScope.$apply(function ()
callback.apply(socket, args);
);
);
,
emit: function (eventName, data, callback)
socket.emit(eventName, data, function ()
var args = arguments;
$rootScope.$apply(function ()
if (callback)
callback.apply(socket, args);
);
)
;
);
【问题讨论】:
【参考方案1】:这就是 javascript 对未命名变量的厌恶的地方。变量arguments
指的是传递给函数的参数数组。您看到的是 Angular 代码抓取函数参数的数组并将它们传递给应用。
function(myVar1, myVar2)
console.log(arguments.length);
将输出2
。
来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments
【讨论】:
好的,谢谢。 $rootScope.$apply(function () callback.apply(socket, args); ); 怎么样?这些线路在做什么? 这个框架在 Angular 网站上有很好的记录,因为它是一个特定于 Angular 的问题。 docs.angularjs.org/api/ng.$rootScope.Scope 如果这回答了您的问题,如果您接受它,我将不胜感激! :D以上是关于Angularjs socket.io 服务的主要内容,如果未能解决你的问题,请参考以下文章
AngularJS:通过 https 使用 socket.io 的聊天应用程序