Node.js路由:将路由处理程序添加到已实例化的http服务器

阿琼·梅塔(Arjun Mehta)

如何将路由处理程序添加到已存在并已实例化的http服务器

我发现的所有路由器(包括Express)似乎都要求将它们传递到http.createServer()方法中。

例如,express:

var server = http.createServer(app);

我的主要标准:

  1. 以类似于sockjs的方式将路由添加到现有服务器
  2. 与已经使用的任何路由器无关(如果有)
  3. 不依赖现有的路由器“ app”对象添加路由(使用路由库创建一个新的路由就可以了)。

示例:将服务器传递到SockJS

var http_server = http.createServer(); // agnostic    
sockjs_server.installHandlers(http_server, options);    
http_server.listen(...);

在sockjs源代码中完成它的方式似乎很神秘……但是我认为它涉及遍历现有处理程序并使用自定义路由器/处理程序覆盖它们。

非常感谢您的帮助!

埃德温·达洛佐

嗯,http服务器不过是EventEmitter它具有一个request事件,事件处理来自客户端的请求。

因此,您可以做的一件事就是围绕当前的处理函数创建一个包装函数。例如,让我们假设存在一些快速应用程序:

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

app.get('/', function(req, res){
    res.send('Hello World!');
});

var server = app.listen(8080);

因此,现在,您可以简单地遍历request服务器中当前已注册的侦听器列表,删除旧的侦听器功能,然后将它们包装在新的侦听器中,以所需的方式处理您的请求。例如,您现在可以创建自己的路由器,并根据请求的内容(即路径,内容类型,可接受的语言等)确定通过哪个管道发送请求。

server.listeners('request').forEach(function(listener){
    server.removeListener('request', listener);
    server.on('request', function(req, res){
        console.log('Before');
        listener(req,res);
        console.log('After');
    });
});

在上面的示例中,您可以看到我console.log围绕侦听器函数的实际执行运行了一些语句。在这种情况下,侦听器功能实际上是Express主request处理程序。express处理程序代表一个管道,通过创建此新包装器函数,您只需在管道的开头添加了一个新管道。

这种技术可以让您先处理请求,然后决定是要发送自己的响应并在此处终止请求,还是通过其他管道发送请求,还是通过快速管道发送请求(即,您的旧监听器功能可用)新的请求处理程序关闭)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将服务器端存储的javascript文件添加到html(node.js)

来自分类Dev

Node.js Express应用程序:如果存在cookie,则从服务器端将CSS类添加到元素

来自分类Dev

Node.js Express应用程序:如果存在cookie,则从服务器端将CSS类添加到元素

来自分类Dev

Node.js-使用正则表达式将多个参数添加到路由

来自分类Dev

Node.js-使用正则表达式将多个参数添加到路由

来自分类Dev

将路由从Node / Express服务器中断开,但路由器未定义

来自分类Dev

将身份验证提供程序添加到Azure移动服务Node.js后端

来自分类Dev

可以在收听时添加到Node.js Express的路由吗?

来自分类Dev

可以在收听时添加到Node.js Express的路由吗?

来自分类Dev

Node.js HTTP服务器

来自分类Dev

Node.js HTTP服务器

来自分类Dev

如何使用node.js中的路由器功能调用服务器端方法?

来自分类Dev

将Node添加到BST崩溃程序的功能

来自分类Dev

服务器端和客户端端的路由-React.js和Node.js

来自分类Dev

无法将.tsx文件添加到Node.js Web应用程序项目

来自分类Dev

Node.js的路由器

来自分类Dev

Node.js路由器顺序

来自分类Dev

使用Node.js在vue-router中为服务器端的SRR设置当前请求路由

来自分类Dev

Node.js服务器崩溃处理

来自分类Dev

Node.js服务器如何处理请求?

来自分类Dev

node.js异常处理服务器

来自分类Dev

为什么Node.js简单的HTTP服务器应用程序无法在服务器上运行?

来自分类Dev

将ffmpeg添加到heroku buildback node.js

来自分类Dev

将FFMPEG添加到Bluemix Node.JS buildpack

来自分类Dev

如何将试剂添加到Node JS API

来自分类Dev

Node.js:将一些JavaScript处理卸载到服务器上

来自分类Dev

了解 Kademlia find_node 并将节点添加到路由表

来自分类Dev

Node.js应用程序的服务器配置

来自分类Dev

node.js http服务器并发问题

Related 相关文章

  1. 1

    将服务器端存储的javascript文件添加到html(node.js)

  2. 2

    Node.js Express应用程序:如果存在cookie,则从服务器端将CSS类添加到元素

  3. 3

    Node.js Express应用程序:如果存在cookie,则从服务器端将CSS类添加到元素

  4. 4

    Node.js-使用正则表达式将多个参数添加到路由

  5. 5

    Node.js-使用正则表达式将多个参数添加到路由

  6. 6

    将路由从Node / Express服务器中断开,但路由器未定义

  7. 7

    将身份验证提供程序添加到Azure移动服务Node.js后端

  8. 8

    可以在收听时添加到Node.js Express的路由吗?

  9. 9

    可以在收听时添加到Node.js Express的路由吗?

  10. 10

    Node.js HTTP服务器

  11. 11

    Node.js HTTP服务器

  12. 12

    如何使用node.js中的路由器功能调用服务器端方法?

  13. 13

    将Node添加到BST崩溃程序的功能

  14. 14

    服务器端和客户端端的路由-React.js和Node.js

  15. 15

    无法将.tsx文件添加到Node.js Web应用程序项目

  16. 16

    Node.js的路由器

  17. 17

    Node.js路由器顺序

  18. 18

    使用Node.js在vue-router中为服务器端的SRR设置当前请求路由

  19. 19

    Node.js服务器崩溃处理

  20. 20

    Node.js服务器如何处理请求?

  21. 21

    node.js异常处理服务器

  22. 22

    为什么Node.js简单的HTTP服务器应用程序无法在服务器上运行?

  23. 23

    将ffmpeg添加到heroku buildback node.js

  24. 24

    将FFMPEG添加到Bluemix Node.JS buildpack

  25. 25

    如何将试剂添加到Node JS API

  26. 26

    Node.js:将一些JavaScript处理卸载到服务器上

  27. 27

    了解 Kademlia find_node 并将节点添加到路由表

  28. 28

    Node.js应用程序的服务器配置

  29. 29

    node.js http服务器并发问题

热门标签

归档