Node.js socket.io:客户端将所有传入消息接收到单个函数中

Node.js socket.io:客户端将所有传入消息接收到单个函数中,node.js,socket.io,Node.js,Socket.io,我正在使用socket.io 1.2.0。在客户端浏览器中,如何在单个侦听器中接收所有事件 socket.on("*",fuction(event,data){ }); 从0.9…上载后,我以前的实现不起作用 我以前对接收所有事件的攻击 var original_$emit = getSocket().$emit; getSocket().$emit = function () { var args = Array.prototype.s

我正在使用socket.io 1.2.0。在客户端浏览器中,如何在单个侦听器中接收所有事件

socket.on("*",fuction(event,data){ 

});
从0.9…上载后,我以前的实现不起作用

我以前对接收所有事件的攻击

     var original_$emit = getSocket().$emit;

        getSocket().$emit = function () {
            var args = Array.prototype.slice.call(arguments);
            original_$emit.apply(getSocket(), ["*"].concat(args));
            if (!original_$emit.apply(getSocket(), arguments)) {
                original_$emit.apply(getSocket(), ["default"].concat(args))
            }
        };

这不是一个完美的解决方案,但效果很好

代码更改服务器套接字.io

/节点_模块/socket.io/lib/socket.js

第128行

 if (~exports.events.indexOf(ev)) {
    emit.apply(this, arguments);
 }
改为

if (~exports.events.indexOf(ev)) {
   var arg = ["*",arguments];
   emit.apply(this, arg);
}
args.splice(0, 0, "*");
emit.apply(this, args);
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
第328行

emit.apply(this, args);
改为

if (~exports.events.indexOf(ev)) {
   var arg = ["*",arguments];
   emit.apply(this, arg);
}
args.splice(0, 0, "*");
emit.apply(this, args);
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
例如:

 var io = require('socket.io')(SERVER);
     io.on('connection', function (socket) {
         socket.on('*', function (event, data) {
         });
    });
var socket = io();
socket.on("*", function (event, data) {
});
var io = require('socket.io-client');
var socket = io(URL,{});
socket.on("*", function (event, data) { });

代码将(浏览器javascript更改为node.js app)的socket.io

node_modules/socket.io/node_modules/socket.io-client/socket.io.js

第724行

emit.apply(this, arg);
改为

if (~exports.events.indexOf(ev)) {
   var arg = ["*",arguments];
   emit.apply(this, arg);
}
args.splice(0, 0, "*");
emit.apply(this, args);
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
第847行

 if (this.connected) {
     emit.apply(this, args);
 }
 if (this.connected) {
     emit.apply(this, args);
 }
改为

if (~exports.events.indexOf(ev)) {
   var arg = ["*",arguments];
   emit.apply(this, arg);
}
args.splice(0, 0, "*");
emit.apply(this, args);
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
例如:

 var io = require('socket.io')(SERVER);
     io.on('connection', function (socket) {
         socket.on('*', function (event, data) {
         });
    });
var socket = io();
socket.on("*", function (event, data) {
});
var io = require('socket.io-client');
var socket = io(URL,{});
socket.on("*", function (event, data) { });

require(“socket.io客户端””)的代码更改(node.js应用到node.js应用)

/node_modules/socket.io-client/lib/socket.js

第129行

emit.apply(this, arguments);
改为

if (~exports.events.indexOf(ev)) {
   var arg = ["*",arguments];
   emit.apply(this, arg);
}
args.splice(0, 0, "*");
emit.apply(this, args);
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
第253行

改为

if (~exports.events.indexOf(ev)) {
   var arg = ["*",arguments];
   emit.apply(this, arg);
}
args.splice(0, 0, "*");
emit.apply(this, args);
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
例如:

 var io = require('socket.io')(SERVER);
     io.on('connection', function (socket) {
         socket.on('*', function (event, data) {
         });
    });
var socket = io();
socket.on("*", function (event, data) {
});
var io = require('socket.io-client');
var socket = io(URL,{});
socket.on("*", function (event, data) { });


这不是一个完美的解决方案,但效果很好

代码更改服务器套接字.io

/节点_模块/socket.io/lib/socket.js

第128行

 if (~exports.events.indexOf(ev)) {
    emit.apply(this, arguments);
 }
改为

if (~exports.events.indexOf(ev)) {
   var arg = ["*",arguments];
   emit.apply(this, arg);
}
args.splice(0, 0, "*");
emit.apply(this, args);
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
第328行

emit.apply(this, args);
改为

if (~exports.events.indexOf(ev)) {
   var arg = ["*",arguments];
   emit.apply(this, arg);
}
args.splice(0, 0, "*");
emit.apply(this, args);
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
例如:

 var io = require('socket.io')(SERVER);
     io.on('connection', function (socket) {
         socket.on('*', function (event, data) {
         });
    });
var socket = io();
socket.on("*", function (event, data) {
});
var io = require('socket.io-client');
var socket = io(URL,{});
socket.on("*", function (event, data) { });

代码将(浏览器javascript更改为node.js app)的socket.io

node_modules/socket.io/node_modules/socket.io-client/socket.io.js

第724行

emit.apply(this, arg);
改为

if (~exports.events.indexOf(ev)) {
   var arg = ["*",arguments];
   emit.apply(this, arg);
}
args.splice(0, 0, "*");
emit.apply(this, args);
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
第847行

 if (this.connected) {
     emit.apply(this, args);
 }
 if (this.connected) {
     emit.apply(this, args);
 }
改为

if (~exports.events.indexOf(ev)) {
   var arg = ["*",arguments];
   emit.apply(this, arg);
}
args.splice(0, 0, "*");
emit.apply(this, args);
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
例如:

 var io = require('socket.io')(SERVER);
     io.on('connection', function (socket) {
         socket.on('*', function (event, data) {
         });
    });
var socket = io();
socket.on("*", function (event, data) {
});
var io = require('socket.io-client');
var socket = io(URL,{});
socket.on("*", function (event, data) { });

require(“socket.io客户端””)的代码更改(node.js应用到node.js应用)

/node_modules/socket.io-client/lib/socket.js

第129行

emit.apply(this, arguments);
改为

if (~exports.events.indexOf(ev)) {
   var arg = ["*",arguments];
   emit.apply(this, arg);
}
args.splice(0, 0, "*");
emit.apply(this, args);
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
第253行

改为

if (~exports.events.indexOf(ev)) {
   var arg = ["*",arguments];
   emit.apply(this, arg);
}
args.splice(0, 0, "*");
emit.apply(this, args);
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
var arg = ["*",ev];
emit.apply(this, arg);
 if (this.connected) {
    args.splice(0, 0, "*");
    emit.apply(this, args);
 }

var arg = ["*",ev];
例如:

 var io = require('socket.io')(SERVER);
     io.on('connection', function (socket) {
         socket.on('*', function (event, data) {
         });
    });
var socket = io();
socket.on("*", function (event, data) {
});
var io = require('socket.io-client');
var socket = io(URL,{});
socket.on("*", function (event, data) { });


我认为这是重复的。看见解决方案:覆盖
socket.on
socket.emit
@croper$emit在1.2.0中不可用;在那一页上,他们给出的结果都是0.9…我想这是重复的。看见解决方案:覆盖
socket.on
socket.emit
@croper$emit在1.2.0中不可用;在那一页,他们给出的结果都是0.9。。。