【问题标题】:Mixing POST request with websocket response - is it a bad practice?将 POST 请求与 websocket 响应混合 - 这是一种不好的做法吗?
【发布时间】:2015-02-14 07:49:36
【问题描述】:

这是 node.js 代码(express.js 和 socket.io)的简短 sn-p。发送 POST 请求和发出套接字响应是否会被视为一种不好的做法,为什么?例如:

var io = require('socket.io')(http);
app.post('/tickets', jsonParser, function(req, res) {
    io.emit('ticket', req.body);
    return res.sendStatus(200);
}

【问题讨论】:

  • 如果你承担了建立套接字通信(全双工)的负担,这两个部分紧密耦合,为什么要通过 HTTP 发送 post 请求并通过套接字返回响应?
  • 在这里同意 niconic - 尽管我可以想到在某些情况下您希望非套接字系统执行 XHR 发布请求,然后向套接字连接发送响应。除了潜在的混乱/混乱之外,我想不出其他原因来说明为什么这是一种不好的做法——只要确保它是你想要支持的最连贯的设计。
  • 你正在向这里的每个人发送,而不仅仅是发送请求的客户端。
  • 是的,我正在向所有人发出信号,这正是我的意图(在这种特殊情况下不使用套接字房间)。关于niconic提到的负担:我的想法是提交本机POST请求而无需为其编写一行js代码-我完全理解侦听套接字响应将需要用js编写套接字事件侦听器

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


【解决方案1】:

我认为这没有问题。我实际上创建了一个通知系统,它以帖子的形式接收消息和目的地,并将通知发送到多个类似的套接字。 从您的代码看来,这就是您正在做的事情,有人创建了一张票,您向所有听众发送了通知。

这似乎是最实用的方法,并且是作为与外部服务器(如 php 或 .net)一起使用的适当 api 的额外好处。如果您只是从自己的节点应用程序中使用它,那么除非您计划从应用程序外部获取请求,否则您可以将其设置为套接字事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 2023-03-19
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多