获取套接字

时间:2016-09-07 17:27:37

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

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

现在我正在努力pageId像这样

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

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

但我想从req.params.pageId路径

中获取express的ID
app.route('/pages/:pageId').get((req, res) => {
  // ...
});

1 个答案:

答案 0 :(得分:0)

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的数据参数。

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