Vapor 3带会话的Websocket

Vapor 3带会话的Websocket,websocket,vapor,Websocket,Vapor,在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 = NIOWebSo

在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。
那么我如何访问会话信息呢

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

这将使蒸汽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)

嘿,你可以看看我的WS-lib for Vapor3,因为它可能会解决你的问题,还有一些后端应用程序和iOS客户端应用程序示例