我正在使用 Node.js 的 net library设置基本的 TCP 套接字连接:
net.createServer(function (socket) {
socket.on("data", function (data) {
console.log("socket to me:", data);
});
}).listen();
有没有办法在不关闭连接的情况下删除或更改 socket.on("data")
监听器?我尝试了显而易见的事情:
net.createServer(function (socket) {
socket.on("data", function (data) {
console.log("socket to me:", data.toString());
socket.on("data", function (data) {
console.log("ouch");
});
});
}).listen(10101);
当我从客户端连接时:
var client = net.connect({host: "localhost", port: 10101});
client.write("boom!");
它打印socket to me: boom!
,正如预期的那样。但是接下来的写输出:
socket to me: boom!
ouch
有什么方法可以改变第一个监听器,或者删除它并用另一个监听器替换它?
最佳答案
事实证明,直接编辑套接字的 _events
对象可以让您换出监听器,即使它们是匿名的。例如:
net.createServer(function (socket) {
socket.on("data", function (data) {
console.log("socket to me:", data.toString());
socket._events.data = function (data) {
console.log("ouch");
};
});
}).listen(10101);
然后在客户端:
var client = net.connect({host: "localhost", port: 10101});
client.write("boom!");
client.write("boom!");
输出:
socket to me: boom!
ouch
只是想我会在这里分享这个,以防它对其他人有用!
关于javascript - 有没有办法更改 Node.js 网络(套接字)库中的 "on"监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33893472/