我正在关注 Vert.x 4 的SockJS 文档,并注意到SockJSSocket
我的处理程序中的每个都有一个.webSession()
和一个.webUser()
. 但是,除了.webSession().id()
我在此套接字处理程序所在的子路由器上注册了一个 AuthHandler,但我前端的 SockJS 客户端无法在 HTTP 升级请求中发送凭据。
我应该如何填充这些字段以供使用?
我正在关注 Vert.x 4 的SockJS 文档,并注意到SockJSSocket
我的处理程序中的每个都有一个.webSession()
和一个.webUser()
. 但是,除了.webSession().id()
我在此套接字处理程序所在的子路由器上注册了一个 AuthHandler,但我前端的 SockJS 客户端无法在 HTTP 升级请求中发送凭据。
我应该如何填充这些字段以供使用?
我正在使用以下直截了当的代码来保持类似会话的信息可用:
class SockJSBridge implements Handler<BridgeEvent> {
@Override
void handle( BridgeEvent event ) {
SockJSSocket socket = event.socket()
MultiMap headers = socket.headers()
switch( event.type() ){
case REGISTER:
def user = getUserFromJWTHeader event.rawMessage.headers.authorization
headers.add 'userId', user.id
break
case SEND:
String userId = headers.get 'userId'
socket.write new JsonObject( address:userId, body:event.rawMessage?.body ).toBuffer()
break
}
}
}