【问题标题】:What utility of express.io VS express + socket.io?express.io VS express + socket.io 有什么用处?
【发布时间】:2016-01-01 09:29:03
【问题描述】:

我在这里发现了 socket.io 和聊天示例:https://github.com/rauchg/chat-example/blob/master/index.js

他们直接使用require('express') 和require('socket.io')。

那又怎样 差异,优势,使用:require('express.io') 喜欢这里http://express-io.org/ ?

就为了赢一条线?严重地?还是有新工具的另一层?

【问题讨论】:

  • socket.io 是一个库,express.io 是一个包含 socket.io 的快速应用程序。这是一个依赖。
  • 是的,但有什么优势?要求两者是否相同?

标签: node.js sockets express socket.io express.io


【解决方案1】:

我一直在我的节点应用程序中使用 express.io。我发现主要优点是您可以将普通快速路由与套接字路由混合使用。

让我解释一个真实的例子:

在我的应用程序中,我有一个带有 Angular 客户端的 nodejs REST API。我的客户需要显示一些由管理员调用特快专递请求创建的实时通知。

一开始,我在 Angular 中设置了一个时间间隔来查阅所有通知,每 5 秒运行一次。
有几个客户端它工作得很好,但是当客户端增加时,我的服务器超载了。尽管没有新的通知,但每个客户都在请求通知。所以我决定开始使用 socket.io 来发送实时通知。

如果我的管理员保存了新通知,服务器会通过套接字广播通知。
这里的问题是管理员在express中调用了一个普通的POST请求,我需要使用socket.io进行广播,所以我集成了express.io,我可以将普通的express请求重定向到一个socket.io方法来进行发射。

var express = require('express.io');
var app = express();

app.http().io()

app.post('/notificacion', function(req, res){
//I save the notification on my db and then ...
req.io.route('enviar');
});

app.io.route('enviar', function(req) { 
    app.io.room('personas').broadcast('alertasControlador',req.io.request.data.notificacion);
});

【讨论】:

  • 没有socket.io就不可能像这样重定向?
【解决方案2】:

我最近,今天,查看 express.io 以及安装节点模块时 npm 报告:

添加了来自 44 位贡献者的 55 个包,并在 32.816 秒内审核了 2606 个包

发现 25 个漏洞(11 个低、5 个中等、9 个高)

运行npm audit fix 修复它们,或运行npm audit 了解详细信息

npm 审计修复修复了两个低漏洞。

当我删除 express.io 时,npm 报告:

在 8.976 秒内移除 57 个包并审核 2539 个包

发现 0 个漏洞

尽管我很想使用非常好的路由功能,但在修复依赖关系之前,我认为这不适用于生产。

【讨论】:

  • 2020 年 5 月依然如此:npm audit 报告的 24 个漏洞。
猜你喜欢
  • 2014-07-22
  • 1970-01-01
  • 2012-03-21
  • 1970-01-01
  • 2016-05-09
  • 2013-02-16
  • 1970-01-01
  • 1970-01-01
  • 2015-09-20
相关资源
最近更新 更多