【问题标题】:Express & Socket.io Route parroting/copying/sharingExpress & Socket.io 路由复制/复制/共享
【发布时间】:2013-03-21 21:24:26
【问题描述】:

我正在 nodejs 中使用 expressjs 和 socket.io。我正在研究为通过 HTTP 或通过 websockets/socket.io 发出的请求分配相同的路由处理程序。

例如:

var responder = function(req, res){
  req.params //<-- {id: 'something...'}
}
app.get('/foo/:id', responder);
io.on('/foo/:id', responder);

socket.io 似乎没有这种类型的路由功能。有谁知道可以帮助解决此问题的库/模块?

【问题讨论】:

    标签: node.js routing express socket.io


    【解决方案1】:

    有多种选择。

    • 如果您想继续使用,请查看express.io

    • 如果你不介意使用一些不同的东西,sails 也可以让你做这种事情。

    更新:sails 现在也使用 express)

    两者都已成功用于生产。

    请注意,您自己实现路由也非常简单。如果您查看how express do it,我相信您将能够找到符合您需求的苗条实现。

    祝你好运!让我知道您最终使用了什么以及它对您的效果。

    【讨论】:

    • 嗨本杰明感谢您的回复。我对 express.io 很熟悉,但它似乎无法以 1:1 匹配路由 - 相反,它似乎能够将 http 请求转发到 socket.io 事件处理函数。 Sails 看起来很棒,但还不能满足我的需求(例如,它们的模型之间没有关系,并且在不破解原始源代码的情况下无法配置 socket.io)
    • 我想我现在要尝试的是使用 flatiron-director (github.com/flatiron/director#api-documentation) 设置路由表,抽象一个响应方法来处理将 JSON 返回到 http 或 websocket 请求,以及调用 .dispatch() 来触发我的路线。我会告诉你这是怎么回事,我也会为它创建一个 github gist。
    • 很抱歉,两者都不适合您的需求。这是当今最好的两个选择。自己处理路由并不太复杂,我不会告诉你如何实现它,flatiron 可能确实也值得一试(没有个人经验,看起来很有趣)。
    • 嘿,本杰明,我已经放弃了 flatiron/director,因为我意识到我可以将路由器放入 express.io gist.github.com/cflynn07/5293090 ^Lines 63 - 79 是我尝试创建的地方用于通过 HTTP 或 socket.io 使用 JSON 响应请求的统一接口我将在客户端上将其与自定义 JS 帮助器方法一起使用。
    猜你喜欢
    • 2018-05-02
    • 2014-08-19
    • 2020-10-05
    • 2010-09-12
    • 1970-01-01
    • 2016-08-22
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多