【问题标题】:How do you get the request data with socket.io with node.js and express?你如何通过 node.js 和 express 获取 socket.io 的请求数据?
【发布时间】:2011-10-12 21:00:11
【问题描述】:

所以我在使用带有 socket.io 的 express 时遇到了这个问题。我认为这是不言自明的;我只需要获取到socket.io的会话和请求参数数据。这不能在客户端完成,因为某些房间将是私人的。有什么解决办法吗?

io.sockets.on('connection', function (socket) {
  socket.join(ROOM ID)

  socket.on('send message', function(data) {
    NEED USER ID STORED IN session.user
  }
})

app.get('/:roomid', function (req, res) {
  //req.session.user = THE USER ID
  //req.params.roomid = THE ROOM ID
})

【问题讨论】:

    标签: node.js express socket.io


    【解决方案1】:

    Socket.IO 0.7.7~ 在套接字上引入了一个名为handshake 的新属性,这是我们在客户端执行初始握手请求时收集的数据。它包含标题、ip 和其他一些东西。

    本维基https://github.com/LearnBoost/socket.io/wiki/Authorizing 轻描淡写地触及了主题。

    【讨论】:

    • 尽管如此,我如何将请求 roomid 发送到 socket.io 以加入房间?
    • 会话存储有一个get 方法,该方法将会话ID 作为参数,因此您可以从cookie 标头中获取会话ID 并将其提供给会话存储。但这确实需要您手动初始化存储并在选项中提供它: var store = new express.MemoryStore; express.session({store:store});并且比在 socket.io 中你可以做 store.get('sessionid', function (err, data) { // 在此处访问你的会话});
    • 至少在我的 NodeJS 上,“握手”包括调用 socket.io 的查询参数:'... "url":"/socket.io/1/?t=1355054837418 “ ...”,所以我必须从“referer”中获取查询字符串参数,例如,为了获取“id”参数:url.parse(socket.handshake.headers.referer, true).query。身份证
    猜你喜欢
    • 2014-04-29
    • 2020-10-14
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多