有啥不同? .on“连接”与 .on“连接”

Posted

技术标签:

【中文标题】有啥不同? .on“连接”与 .on“连接”【英文标题】:What's the difference? .on "connect" vs .on "connection"有什么不同? .on“连接”与 .on“连接” 【发布时间】:2014-12-08 17:19:55 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

这些是同一事物的不同名称。 写在socket.iodocs:

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

【讨论】:

【参考方案2】:

来自命名:

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

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

【讨论】:

我不确定这是否澄清了任何事情 - 你能举例说明吗? “连接”确实存在,你可以在官方文档示例中看到它。 如果它存在于文档中并不意味着它真的存在。你测试了这两个事件吗?什么时候叫他们? 是的,当然,没有不同的工作方式,我似乎无法理解。【参考方案3】:

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

【讨论】:

以上是关于有啥不同? .on“连接”与 .on“连接”的主要内容,如果未能解决你的问题,请参考以下文章

多表连接查询中,“on”和“where”有啥区别吗?

Sign in, Sign up, Login in, Login on 有啥区别?

26.MySQL中的内连接INNER JOIN

PostgreSQL 中的 SQL JOIN - WHERE 子句中的执行计划与 ON 子句中的不同

汽车上的IG-on 和 ACC 有啥区别?

R语言ggplot2可视化箱图并使用线条(line)连接两个箱图中不同分组成对的数据点(Connecting Paired Points on Boxplots with ggplot2)