在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 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)对于Vapor3,在将HTTP升级请求传递给WebsocketServer之前,不会调用SessionMiddleware。那么我如何访问会话信息呢?
发布于 2019-05-11 04:10:50
所以,我非常清楚这个帖子已经很旧了,操作员可能在几个月前就找到了答案或者放弃了。以防有人还在寻找它,你不能使用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)https://stackoverflow.com/questions/54251010
复制相似问题