【问题标题】:Similarity/Difference between SocketIO and EventEmitter in NodeJSNodeJS 中 SocketIO 和 EventEmitter 的异同
【发布时间】:2013-10-11 01:16:30
【问题描述】:

我对 nodejs 中的 Socket.io 和 EventEmitter API 有点困惑。是的,我是事件驱动的 NodeJS 编程的新手。这两者之间有什么显着区别吗?还是一个已经超越了另一个?它们的设计目的是相同的还是不同的?
任何示例/资源链接,说明它们之间的区别会很好..

【问题讨论】:

标签: node.js eventemitter socket.io


【解决方案1】:

您不应该将EventEmitter API 和 Socket.IO 进行比较,因为它们是完全不同的东西并且不相关,除了 Socket.IO 在服务器端和客户端都使用事件这一事实。

EventEmitter API 被任何发出事件的东西使用,例如 HTTP 服务器、流、文件操作等。它们的使用方式如下:

var EventEmitter = require('events').EventEmitter;
// create a new instance
var em = new EventEmitter();

// attach a handler to an event named "event"
em.on('event', function() {
});

// fire the "event" event
em.emit('event');

另一方面,Socket.IO 是一个用于跨浏览器实时数据传输的库。它用于将数据从客户端发送到服务器,或从服务器发送到客户端。

// on the server side
var io = require('socket.io');
io.sockets.on('connection', function(socket) {
  socket.emit('event');
});

// on the client side
var socket = io.connect();
socket.emit('data');

【讨论】:

  • 谢谢哥们......因为任何疑问都是没有健全知识的疑问......我会亲自处理这两个问题。你能推荐一些关于socket.io的好书或资源吗,我需要更多关于它的知识。
  • 文档是最好的查看位置,还有他们 Github 上的 wiki
  • 我们可以使用 EventEmitter 从一个服务(微服务架构)发出事件并使用 Socket.io 从另一个服务监听该事件吗?
  • 回答 Dheeraj Kumar 的问题,据我了解,不同服务之间不能使用 EventEmitter,因为它是为组件交互而设计的,这意味着它只能在内部工作。跨度>
猜你喜欢
  • 2016-11-03
  • 2018-02-08
  • 2012-07-14
  • 2020-07-28
  • 2015-10-19
  • 2018-08-05
  • 1970-01-01
相关资源
最近更新 更多