什么是io和socket?

what is io and socket?

我对 socket.io 很困惑,我正在尝试使用 socket.io 在 node.js 中创建一个简单的聊天服务器应用程序。我有几个问题想请教

var app = express();

var server = require('http').createServer(app);
var io = require('socket.io')(server);

io.on('connection', function(socket) {

  io.emit('online');
  console.log('user is online');

  socket.on('disconnect', function() {
    io.emit('user is disconnected');
    console.log('user is disconnected');
  });

  socket.on('chat', function(msg) {
    console.log("message: " + msg);
    io.emit('chat', msg);
  });
  socket.broadcast.emit('user connected');
});

server.listen(3000);

1)根据上面的代码,我不明白为什么我们需要在io.on('connection')中再次调用io变量,我可以用socket代替吗?

2) socket 变量是什么? io和socket有什么区别?

3) 什么是io.emitio.onsocket.emitsocket.on

我知道 io 是 socket.io 服务器,但为什么我们需要使用 io.emit 而不是 socket.emit

因为我是刚开始学习node.js和socket.io的新手,请详细解释一下。请不要对我太苛刻:)

io.on() 这是为特定事件注册事件处理程序。那就是当对象引发该特定事件时,您的代码将被调用。所以在这种情况下 io 是您的 socket.io 服务器对象。当客户端连接时,它将引发连接事件,允许您处理它。

https://nodejs.org/api/events.html#events_events

socket 是您对该特定客户端连接的句柄。它允许您直接与该客户沟通。 emiton 允许您侦听来自该特定客户端的事件或向该特定客户端发送事件。

io.emit 允许您向所有连接的客户端发出事件。

http://socket.io/docs/server-api/#server#emit

您的示例似乎是一个聊天消息应用程序。您使用 io.emit 而不是 socket.emit,因为您希望在用户键入消息或连接时将消息发送到所有连接的客户端。

但这是文档中所有的基本内容。