【问题标题】:Vapor 3 Websocket with Sessions带有会话的 Vapor 3 Websocket
【发布时间】:2019-06-12 13:02:39
【问题描述】:

在 Vapor 2 中,可以在连接新的 websocket 时访问会话。

例如:

setupRoutes(){

  socket("ws") { request, websocket in
    let session = try request.assertSession()
    guard let userId = session.data["user_id"]?.string else {
      ..
    }
}

在 Vapor 3 中配置.swift:

let wss = NIOWebSocketServer.default()
  wss.get("ws") { websocket, request in

    --get session information--

    websocket.onText { websocket, text in
      websocket.send(text)
    }
 }
 services.register(wss, as: WebSocketServer.self)

使用 Vapor 3,在将 HTTP 升级请求传递给 WebsocketServer 之前,不会调用 SessionMiddleware。 那么如何访问会话信息呢?

【问题讨论】:

标签: websocket vapor


【解决方案1】:

所以,我非常清楚这个线程已经过时,OP 可能在几个月前找到了答案或放弃了。以防万一有人遇到这个还在寻找,你不能使用websocket.session 来访问会话吗?

这将使 Vapor 3 代码

let wss = NIOWebSocketServer.default()
  wss.get("ws") { websocket, request in

    guard let userID = (try? websocket.session).data["user_id"]?.string else {
        ...
    }

    websocket.onText { websocket, text in
      websocket.send(text)
    }
 }
 services.register(wss, as: WebSocketServer.self)

【讨论】:

  • 你知道如何在 iOS 应用中设置 web socket.session.data 吗?只是一个使用 URLSessionWebSocketTask 的简单示例?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
  • 2013-07-05
  • 2021-09-01
  • 2012-08-24
相关资源
最近更新 更多