【问题标题】:Refreshing the socket.io request object刷新 socket.io 请求对象
【发布时间】:2017-03-08 03:35:00
【问题描述】:

如何使用 Ajax 调用刷新/填充 Node.js 中的 socket.request.session.passport 对象?

我尝试在 Ajax 调用后重新连接套接字,但无济于事。似乎服务器上的这个对象只有在页面加载后才会刷新,这表明 socket.io 客户端库在加载时会读取浏览器中的 cookie,并且不再查看它们。

我正在使用 Express、passport.js 和 socket.io。

【问题讨论】:

  • socket.request 来自 socket.io 连接创建时的状态。如果您在客户端杀死 socket.io 对象并创建一个全新的对象,您应该在服务器上获得一个新连接,并在服务器上获得一个新的socket.request。您可能只想看看如何在这里更好地使用护照和socket.io:github.com/jfromaniello/passport.socketio
  • 是的,它不再查看 cookie,因为 cookie 仅通过 socket.io 连接发送。只要连接保持连接,就不会再次发送 cookie,因为一旦它与原始 HTTP 请求(上面有 cookie)连接,所有未来的通信都只是 webSocket/socket.io 数据包。通过 socket.io 消息进行通信时不发送任何 cookie。

标签: node.js express socket.io passport.js


【解决方案1】:

感谢@jfriend00,解决方案是销毁客户端上的对象并创建一个新对象。

mysocket.disconnect()
mysocket = io()

【讨论】:

    猜你喜欢
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 2011-02-25
    • 1970-01-01
    • 2016-01-05
    • 2016-03-26
    • 1970-01-01
    相关资源
    最近更新 更多