Angulars JS Btford library, NodeJS Socket.io

Angulars JS Btford library, NodeJS Socket.io

本文关键字:NodeJS Socket io library JS Btford Angulars      更新时间:2023-09-26

在angularjs(BTFord库)和NodeJS Socket.IO…之间开发聊天应用程序时,我实际上遇到了一个问题

事实上,我需要用户a向用户B发送消息。-如果我将消息记录在节点中,它工作得很好,而且只发送一次。-在angular js中,事件on("message")被调用3或4次,我有发送3或4个的消息

这对我来说是个问题。。。我只需要收到一次信息。这有什么问题吗?

感谢提前

我也遇到过类似的情况,最终控制器执行了不止一次,所以请注意,使用console.log中的消息检查它是否运行了不止一个,beign说,你可能在客户端注册了几个监听器,以避免在客户端中设置一个条件:(假设你在$rootscope上注册事件)

if( $rootScope.$$listeners['socket:someListener']===null || $rootScope.$$listeners['socket:someListener']===undefined){
    $rootScope.$on('socket:someListener', function(ev, data){
        //Client code
    }
}

这只会让你的听众注册一次!干杯

切换/重新加载控制器时,事件处理程序不会被破坏。因此,您可能已经多次订阅您的活动。

请参阅文档:https://github.com/btford/angular-socket-io#socketremovelistener

你能试试这个吗:

angular.module('Foo').controller('BarCtrl', function ($scope, socket) {
  socket.on('message', function (msg) {
     // ... do something
  });
  $scope.$on('$destroy', function() {
    socket.removeListener('message');
  });
});