node.js - Angularjs socket.io 服务

标签 node.js angularjs socket.io angularjs-directive angularjs-scope

您好,我正在构建一个 angularjs 服务,它将通过 socket.io 使用 websockets 与后端 (node.js) 进行通信。我在网上找到了一段代码,但我不太明白它是如何工作的。特别是在“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);
          }
        });
      })
    }
  };
});

最佳答案

这就是 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

关于node.js - Angularjs socket.io 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21372683/

相关文章:

Javascript - 创建可迭代抽象层

node.js - 如何在 App-Engine 上运行的基于 Express 的 Node JS 应用程序中获取远程客户端的 IP 地址

javascript - 当 promise 在监视函数中得到解决时,如何使 promise 的 then 函数起作用?

javascript - 通过页面刷新和页面更改持久化套接字

node.js - Socket IO 连接到 ws ://someAddress was interrupted while the page was loading

Node.js 集群模块似乎破坏了 Socket.io 握手

node.js - socket.io 客户端持续重试无法访问的主机

mysql - 有时我无法在离线时使用 node.js 连接到 mysql 数据库,直到我在线,其他时候它就可以工作,为什么?

javascript - Webapi Controller 参数为空

javascript - 滚动到水平溢出的元素