NodeJS 有什么区别?.on“connect”与.on“connection”

hyrbngr7  于 2023-06-22  发布在  Node.js
关注(0)|答案(3)|浏览(151)

我很难理解以下两者的区别:

io.on('connection', function (){ });

io.on('connect', function,(){ });

可能是一个相当原始的问题,但我无法找到关于它的明确文件。我很想知道其中的区别。

ymdaylpp

ymdaylpp1#

这是同一事物的不同名称。如socket.io v2文档(当前版本)所述:
事件:connection是事件:connect。在客户端连接时触发的连接。

neskvpey

neskvpey2#

我同意mabe.berlin关于这些事件顺序的想法。
运行:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
io.on('connection', function(socket){
    console.log('connection',socket.id);
    io.on('connect',function (socket) {
        console.log('conenct',socket.id);
    });
});
http.listen(1111);

你会得到这样的结果:

connection 6Song1KpSUoUkKgPAAAA

但如果你尝试

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
io.on('connect',function (socket) {
    console.log('conenct',socket.id);
    io.on('connection', function(socket){
        console.log('connection',socket.id);
    });
});
http.listen(1111);

你应该得到这样的东西:

conenct pSlSKNaabR2LBCujAAAA
connection pSlSKNaabR2LBCujAAAA

它证明了socket.io将首先处理connect,然后处理connection

fsi0uk1n

fsi0uk1n3#

从命名:
io.on('connection', function (socket) { });在连接打开后被直接调用。io.on('connect', function () { });在连接打开之前被直接调用。
但是在快速阅读代码(https://github.com/Automattic/socket.io/blob/master/lib/socket.js)上,它看起来像是事件名称connect在 * 连接打开之后发出,并且没有名为connection的事件。

相关问题