服务器端的socket.io中有两个连接事件。一个是.on('connect'),另一个是.on('connection')。官网并没有说明这两个事件的区别。那么这两个事件有什么区别呢?使用上好像没什么区别。作者正在试验socket.io版本2.0.4。在基本情况下,这段代码构建了最简单的socket.io服务器并监听端口1111。varapp=require('express')();varhttp=require('http').Server(app);vario=require('socket.io')(http);io.on('connect',function(socket){console.log('conenct',socket.id);});io.on('connection',函数(套接字){console.log('connection',socket.id);});http.listen(1111);客户端连接后,日志如下:conenct8uBVxwqym7pxsJANAAAAconnection8uBVxwqym7pxsJANAAAA可以看到都正常响应连接事件。但是我们发现connect事件好像在connection事件之前,因为它的log在前面!让我们验证一下我们的猜测。交换位置:connectsetconnectionvarapp=require('express')();varhttp=require('http').Server(app);vario=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);我们发现输出日志的顺序没有改变:conenctpSlSKNaabR2LBCujAAAAconnectionpSlSKNaabR2LBCujAAAA这说明在connect事件之后仍然可以触发connection事件。交换位置:connectionsetsconnect我们要验证在connection事件之后,connect不能被触发。varapp=require('express')();varhttp=require('http').Server(app);vario=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事件被触发后,connect事件并没有被触发!connection1QCOp0Y0fuH2xG-LAAAA结论connect和connection事件的作用类似,只是触发时间不同。connect在connection之前触发。connect一旦有连接就触发,connection是connected完全建立后触发。一般和官网例子一样,直接使用connection事件即可。但是为了和前端保持一致,把所有的connect事件都用上也未尝不可。参考:https://socket.io/get-started...https://stackoverflow.com/que...
