【发布时间】:2014-12-08 17:19:55
【问题描述】:
我很难理解以下之间的区别:
io.on('connection', function (){ });
io.on('connect', function,(){ });
可能是一个相当原始的问题,但是我无法找到关于它的明确文档。很想了解其中的区别。
【问题讨论】:
我很难理解以下之间的区别:
io.on('connection', function (){ });
io.on('connect', function,(){ });
可能是一个相当原始的问题,但是我无法找到关于它的明确文档。很想了解其中的区别。
【问题讨论】:
这些是同一事物的不同名称。
写在socket.iodocs:
事件:
connection是事件:connect的同义词。来自客户端的连接触发了哪个连接。
【讨论】:
来自命名:
io.on('connection', function (socket) { }); 在连接打开后直接调用。
io.on('connect', function () { }); 被直接调用之前连接将被打开。
但在快速阅读代码 (https://github.com/Automattic/socket.io/blob/master/lib/socket.js) 上,似乎事件名称 connect 是在打开连接之后发出的 并且没有名为 connection 的事件。
【讨论】:
我同意 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。
【讨论】: