有什么不同?.on"connect"vs .on"connection"

Mia*_*Mia 10 node.js socket.io

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

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

io.on('connect', function,(){ });
Run Code Online (Sandbox Code Playgroud)

可能是一个非常原始的问题,但我无法找到有关它的明确文档.很想学习差异.

טל *_*עדס 7

这些是同一事物的不同名称。正如socket.io 文档中所写:

事件:connection是事件:的同义词connect。哪个连接在来自客户端的连接上触发。


mab*_*lin 5

从命名:

io.on('connection', function (socket) { });连接打开直接调用。 在打开连接之前io.on('connect', function () { });直接调用。

但是在快速阅读代码(https://github.com/Automattic/socket.io/blob/master/lib/socket.js)上,似乎在打开连接connect发出了事件名称,并且没有命名事件.connection


小智 5

我同意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);
Run Code Online (Sandbox Code Playgroud)

你会得到类似的东西:

connection 6Song1KpSUoUkKgPAAAA
Run Code Online (Sandbox Code Playgroud)

但是如果你尝试

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);
Run Code Online (Sandbox Code Playgroud)

您应该得到类似的东西:

conenct pSlSKNaabR2LBCujAAAA
connection pSlSKNaabR2LBCujAAAA
Run Code Online (Sandbox Code Playgroud)

证明socket.io将connect首先处理connection