def socket: WebSocket = {
WebSocket.acceptOrResult[Message,Message] { implicit request: RequestHeader =>
serviceUserIdentity.getUserIdentity(request) map {
case Some(userIdentityPlay) if userIdentityPlay.hasValidLicense =>
Right(
actorFlow.actorRef(out =>
actorWSServer.props(out)
)
)
case Some(_) =>
Left(Results(4403)) //invalid user
case None =>
Left(Results(4401)) //session expired
} recover {
case exception: Exception =>
Left(InternalServerError)
}
}
}
当用户没有有效的许可证或他的会话已过期时,我从服务器得到的CloseEvent
。
CloseEvent {isTrusted: true,wasClean: false,code: 1006,reason: "",type: "close", …}
似乎Result
Http代码(4403)被覆盖为1006。
我期望的结果:
CloseEvent {isTrusted: true,code: 4403, …}
有没有办法在WebSocket.accept
做到这一点?
还是使用play.api.http.websocket.CloseMessage
的解决方法?