Websocket Socket.io命名空间连接

Websocket Socket.io命名空间连接,websocket,socket.io,Websocket,Socket.io,全部: 我对socket.io非常陌生,当我尝试名称空间时,我想知道为什么默认通道和指定通道都会被调用,比如: var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res){ console.log("Send chat page"); res.sendFile(_

全部:

我对socket.io非常陌生,当我尝试名称空间时,我想知道为什么默认通道和指定通道都会被调用,比如:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function(req, res){
    console.log("Send chat page");
  res.sendFile(__dirname+'/index.html');
});

io.on('connection', function(socket){
    console.log("Connected");
});

var chat = io.of("/chat");
chat.on('connection', function(socket){
    console.log("Connected chat");
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});
客户端代码如下所示:

  var socket = io("http://localhost:3000/chat");
当我运行它时,控制台会打印出“已连接”和“已连接聊天”

我想知道为什么它是这样工作的,以及如何只连接到聊天频道?


谢谢

我相信它是这样工作的,因为他们就是这样实施的。虽然文档不是100%清楚,但它确实给人一种印象,即始终存在默认连接,这就是它的工作方式。如果您只想连接到一个频道,就不要将任何侦听器连接到io。on…@Gary谢谢,所以socket.io连接更像是逐级连接?首先连接default/,然后连接/下的任何名称空间_level2,然后连接名称空间_level2下的任何名称空间_level3?我知道它作为/(默认)和/名称空间(名称空间)工作。我怀疑你可以有多个级别,但试试看。我的理解是,如果使用名称空间,则会得到一个默认通道和一个名称空间。