Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Socket.io与AngularJS的重新连接_Angularjs_Socket.io - Fatal编程技术网

Socket.io与AngularJS的重新连接

Socket.io与AngularJS的重新连接,angularjs,socket.io,Angularjs,Socket.io,我正在尝试添加socket.io作为新的角度服务 服务器可以断开未获得身份验证的客户端的连接 客户端可以稍后再次连接服务器 我发现的问题是,无法为新连接处理以前的侦听器事件。是否需要向套接字连接添加新的侦听器?如何重用以前的侦听器事件 angular.module('services') .factory('socket', function($rootScope, ENV) { var socket = io.connect(ENV.chatServer,{'force

我正在尝试添加socket.io作为新的角度服务

服务器可以断开未获得身份验证的客户端的连接

客户端可以稍后再次连接服务器

我发现的问题是,无法为新连接处理以前的侦听器事件。是否需要向套接字连接添加新的侦听器?如何重用以前的侦听器事件

angular.module('services')
.factory('socket', function($rootScope, ENV) {
            var socket = io.connect(ENV.chatServer,{'forceNew': true });

            return {
              reconnect: function (id, accesstoken) {
                console.log('socket.reconnect()');
                //socket.io.reconnect();
                socket = io.connect(ENV.chatServer,{'forceNew': true });
                socket.on('connect', function(){
                  socket.emit('authentication', {uid: id, accessToken: accesstoken });
                });
              },
              disconnect: function () {
                socket.io.disconnect();
              },
              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);
                    }
                  });
                });
              }
            };
          });

你能确认这就是你试图集成的socket.io组件吗?我刚刚在index.html中添加了socket.io客户端库(/socket.io/socket.io.js),我将尝试该库,thx解决了我的问题