在套接字中获取请求参数

Get request parameters inside socket

本文关键字:请求 参数 获取 套接字      更新时间:2023-09-26

我想在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) => {
  // ...
});

套接字。IO连接是独立的,不是快速路由处理程序的一部分。因此,您不能从套接字直接访问req.params.pageId。IO连接,因为当套接字请求结束和完成时。IO连接到达。所以,当你从套接字连接时,你需要包括一些额外的信息。或者当你发送一个特定的套接字时。指示页id的IO消息。

所以,你有几个选择:

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

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

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