package cn.flightfeather.supervision.socket.config
|
|
import org.apache.logging.log4j.util.Strings
|
import org.springframework.http.server.ServerHttpRequest
|
import org.springframework.http.server.ServerHttpResponse
|
import org.springframework.stereotype.Component
|
import org.springframework.web.socket.WebSocketHandler
|
import org.springframework.web.socket.server.HandshakeInterceptor
|
|
/**
|
*
|
* @date 2024/7/19
|
* @author feiyu02
|
*/
|
@Component
|
class WsHandshakeInterceptor : HandshakeInterceptor {
|
/**
|
* 握手前
|
*/
|
@Throws(Exception::class)
|
override fun beforeHandshake(
|
request: ServerHttpRequest,
|
response: ServerHttpResponse,
|
wsHandler: WebSocketHandler,
|
attributes: MutableMap<String, Any>,
|
): Boolean {
|
println("握手开始")
|
val hostName = request.remoteAddress.hostName
|
// TODO: 2024/7/19 后续可添加用户身份验证机制,sessionId可替换为实际的用户id
|
val sessionId = hostName + (Math.random() * 1000).toInt().toString()
|
if (Strings.isNotBlank(sessionId)) {
|
// 放入属性域
|
attributes["session_id"] = sessionId
|
println("用户 session_id $sessionId 握手成功!")
|
return true
|
}
|
println("用户登录已失效")
|
return false
|
}
|
|
/**
|
* 握手后
|
*/
|
override fun afterHandshake(
|
request: ServerHttpRequest,
|
response: ServerHttpResponse,
|
wsHandler: WebSocketHandler,
|
exception: Exception?,
|
) {
|
println("握手完成")
|
}
|
}
|