【问题标题】:what is io and socket? [closed]什么是io和socket? [关闭]
【发布时间】:2015-11-18 03:40:42
【问题描述】:

我对 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的新手,请详细解释一下。请不要对我太苛刻:)

【问题讨论】:

  • 您需要了解更多关于 Javascript 和一般编程的知识。如果您具备必备知识,这些问题的答案对您来说是显而易见的。换句话说,你正在尝试建造一艘宇宙飞船,甚至不知道如何做代数。
  • 如果您是 node 新手,我建议您参加 nodeschool 研讨会,而不是一开始就尝试自己构建应用程序,nodeschool.io/#workshoppers

标签: node.js socket.io


【解决方案1】:

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,因为您希望在用户键入消息或连接时将消息发送给所有连接的客户端。

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

【讨论】:

  • 所以如果我使用 socket.emit 它只会发送给一个客户端?
  • 这是正确的,套接字具有与其相关的特定客户端的信息。您还可以将客户端或 socket 分到不同的组中,然后只发送给该组中的客户端
  • .on 就像一个监听器,而 .emit 是发送?
猜你喜欢
  • 1970-01-01
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多