【问题标题】:Get request parameters inside socket获取套接字内的请求参数
【发布时间】:2017-01-15 12:05:47
【问题描述】:

我想在每次运行套接字时在 mongodb 集合中创建一个新文档,但是这些集合应该属于我所在的页面。

现在我正在像这样录制pageId

io.on('connection', (socket) => {
  const pageId = '57cc491c95f2513e5aad2590';

  socket.on('new nodes', (positions) => {
    Document.create({pageId: pageId}, (err, doc) => {
      // ...
    });
  });
});

但我想在 express 路由中从 req.params.pageId 获取 id

app.route('/pages/:pageId').get((req, res) => {
  // ...
});

【问题讨论】:

    标签: javascript node.js mongodb sockets socket.io


    【解决方案1】:

    socket.io 连接独立存在,不是快速路由处理程序的一部分。因此,您不能直接从 socket.io 连接访问req.params.pageId,因为当 socket.io 连接到达时,该请求已经结束并完成。因此,当您从 socket.io 连接或发送指示页面 id 的特定 socket.io 消息时,您将不得不包含一些附加信息。

    所以,你有几个选择:

    1. 当您从页面连接时,您可以在连接 URL 中包含一个查询参数,以指示 pageId。然后,在您的 io.on('connection', ...) 代码中,您可以查看该查询参数以获取 pageId。

    2. 当您发送new nodes 消息时,您可以包含一个指定pageId 的数据参数。

    这可以在页面上的 Javascript 中实现,确定它是什么 pageId 并将其作为所需参数插入,或者可以通过任何渲染引擎创建您的初始页面更自动地完成(因此插入 pageId在页面渲染时直接进入您的代码)。

    【讨论】:

    • @Jamgreen - 这有助于解释您的选择吗?
    猜你喜欢
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 2016-05-04
    • 2018-04-26
    • 2011-05-08
    • 2021-05-04
    • 2016-01-23
    • 1970-01-01
    相关资源
    最近更新 更多