有什么不同? .on“connect”vs .on“connection”

时间:2014-10-14 02:53:23

标签: node.js socket.io

我很难理解:

之间的区别
io.on('connection', function (){ });

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

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

3 个答案:

答案 0 :(得分:4)

我同意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

答案 1 :(得分:3)

来自命名:

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

但是在快速阅读代码(https://github.com/Automattic/socket.io/blob/master/lib/socket.js)上,在打开连接之后,事件名称io.on('connect', function () { });似乎是发出的,并且没有名为{{1的事件}}

答案 2 :(得分:0)

socket.io docs所述:

  

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