Vapor 3 Websocket с сессиями - PullRequest
       18

Vapor 3 Websocket с сессиями

0 голосов
/ 18 января 2019

В Vapor 2 было возможно получить доступ к сеансу при подключении нового веб-сокета.

Например:

setupRoutes(){

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

В Vapor 3 configure.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 SessionMiddleware не будет вызываться до передачи HTTP-запроса на обновление WebsocketServer. Итак, как я могу получить доступ к информации о сеансе?

1 Ответ

0 голосов
/ 10 мая 2019

Итак, я в курсе, что эта ветка старая, и ОП, вероятно, нашел ответ или сдался несколько месяцев назад. На всякий случай, если кто-то сталкивается с этим все еще выглядит, вы не можете использовать 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)
...