我在这里发现了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和聊天示例:https://github.com/rauchg/chat-example/blob/master/index.js
他们直接使用 require('express')
和 require('socket.io')
。
那么,使用 require('express.io')
像这个网站http://express-io.org/有什么不同和优势呢?
只是为了多赢得一行吗?真的吗?还是说有新工具的另一个层面?
我在我的node app中使用了express.io。我发现它的主要优点是可以将普通的express路由与socket路由混合使用。
让我举个实际例子:
我的应用程序中有一个基于nodejs的REST API和一个Angular客户端。我的客户端需要显示一些实时通知,这些通知是由管理员调用express post请求创建的。
起初,我在Angular中设置了一个时间间隔,每隔5秒运行一次以查询所有通知。
当客户端较少时,它运行得很完美,但是当客户端增加时,我的服务器就会超载。每个客户端都在请求通知,尽管他们没有新的通知。因此,我决定开始使用socket.io来发送实时通知。
如果我的管理员保存了一个新通知,服务器会通过socket广播该通知。
问题在于管理员调用普通的express POST请求,而我需要使用socket.io进行广播,因此我集成了express.io并且可以将普通的express请求重定向到socket.io方法以进行emit。
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);
});
最近,我看了一下express.io,并安装了node模块。npm报告如下:
从44个贡献者中添加了55个软件包,并在32.816秒内审核了2606个软件包。
发现25个漏洞(11个低危,5个中危,9个高危)。
运行npm audit fix
进行修复,或者通过npm audit
查看详细信息。
npm audit fix
修复了两个低危漏洞。
当我删除express.io时,npm报告如下:
删除了57个软件包,并在8.976秒内审核了2539个软件包。
未发现漏洞。
尽管我很想使用非常好的路由功能,但在修复依赖项之前,我认为这不适合用于生产环境。
npm audit
报告了24个漏洞。 - Mehdi