angularjs - 在 angularjs 中的每个 View 加载上创建与 socket.io 的新连接

标签 angularjs node.js socket.io

我正在使用 angularjs、nodejs 和 socket.io。 我有一个 main.html,它有主视图,其中不同的 html 文件加载到 ng-view 中。现在我想要的是,每次在 angular-js 的 ng-view 中加载新的 html 时,我想创建一个新的套接字连接。目前它的作用是仅在第一次加载 main.html 时创建一个新套接字,而不是在每次加载 html View 时创建一个新套接字。

最佳答案

我认为你想要的是当你匹配路由时在每个 Controller 中创建一个套接字。

所以,你可以为此创建一个工厂,类似的东西:

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

然后只需调用您的 Controller :socket.on('...', function (...) {...}) 确保套接字已被注入(inject)。

希望能解决您的问题! :)

关于angularjs - 在 angularjs 中的每个 View 加载上创建与 socket.io 的新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31825678/

相关文章:

javascript - 从 2 个不同的属性获取 MySql 表中的项目

node.js - Mongoose 可以为我提供某个领域的所有不同值(value)吗?

javascript - Socket.io IE7-9 JSONP 轮询错误

javascript - 下载 XLSX 已损坏

angularjs - 有条件地注入(inject) Angular 模块依赖

javascript - 为 ionic 标记创建多个信息窗口

node.js - 基本的socket.io身份验证

javascript - 使用 Node.js 网络服务器的 Angular.js 教程

javascript - 我无法将 css 文件连接到 node.js 服务器上的 html 文件

node.js - 无法使用node.js和socket.io从客户端向服务器发送消息