package com.flightfeather.uav.socket.handler
|
|
import io.netty.channel.ChannelHandlerContext
|
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame
|
import org.springframework.stereotype.Component
|
|
/**
|
*
|
* @date 2025/5/13
|
* @author feiyu02
|
*/
|
@Component
|
class UnderwayWebSocketServerHandler : BaseHandler() {
|
|
private val sessionPool = mutableMapOf<String?, ChannelHandlerContext?>()
|
|
override var tag: String = "UAV-WS"
|
|
override fun channelRegistered(ctx: ChannelHandlerContext?) {
|
super.channelRegistered(ctx)
|
// 将连接存储
|
if (!sessionPool.containsKey(ctx?.name())) {
|
sessionPool[ctx?.name()] = ctx
|
}
|
}
|
|
override fun channelRead(ctx: ChannelHandlerContext?, msg: Any?) {
|
super.channelRead(ctx, msg)
|
|
when (msg) {
|
is TextWebSocketFrame->{
|
println(msg.text())
|
ctx?.channel()?.writeAndFlush(msg)
|
}
|
}
|
}
|
|
override fun channelInactive(ctx: ChannelHandlerContext?) {
|
super.channelInactive(ctx)
|
// 将连接移除
|
if (sessionPool.containsKey(ctx?.name())) {
|
sessionPool.remove(ctx?.name())
|
}
|
}
|
|
fun send() {
|
|
}
|
|
fun broadcast(msg: String) {
|
sessionPool.forEach { t, u ->
|
u?.channel()?.writeAndFlush(TextWebSocketFrame(msg))
|
}
|
}
|
}
|