From 94fee0b511279679b43e210878d3d36e5a14384b Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期二, 30 九月 2025 09:14:10 +0800 Subject: [PATCH] 2025.9.30 1. 新增走航任务统计功能 --- src/main/kotlin/com/flightfeather/uav/socket/UnderwaySocketServer.kt | 31 ++++++++++++++++++++++++++++++- 1 files changed, 30 insertions(+), 1 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/socket/UnderwaySocketServer.kt b/src/main/kotlin/com/flightfeather/uav/socket/UnderwaySocketServer.kt index c9d98ea..f3248ef 100644 --- a/src/main/kotlin/com/flightfeather/uav/socket/UnderwaySocketServer.kt +++ b/src/main/kotlin/com/flightfeather/uav/socket/UnderwaySocketServer.kt @@ -1,5 +1,9 @@ package com.flightfeather.uav.socket +import com.flightfeather.uav.domain.repository.SceneInfoRep +import com.flightfeather.uav.domain.repository.SourceTraceRep +import com.flightfeather.uav.socket.handler.ServerHandler +import com.flightfeather.uav.socket.handler.UnderwayWebSocketServerHandler import com.flightfeather.uav.socket.processor.BaseProcessor import io.netty.bootstrap.ServerBootstrap import io.netty.channel.ChannelHandler @@ -9,15 +13,23 @@ import io.netty.channel.socket.nio.NioServerSocketChannel import io.netty.channel.socket.nio.NioSocketChannel import io.netty.handler.codec.LineBasedFrameDecoder +import io.netty.handler.codec.http.HttpObjectAggregator +import io.netty.handler.codec.http.HttpServerCodec +import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler import io.netty.handler.codec.string.StringDecoder import io.netty.handler.codec.string.StringEncoder +import org.springframework.stereotype.Component import java.nio.charset.Charset /********************************************************************************* * 璧拌埅鐩戞祴鏁版嵁socket闀胯繛鎺ユ湇鍔$ * 鐢ㄤ簬鎺ユ敹瑙f瀽璧拌埅鐩戞祴鏁版嵁锛屽墠绔洃娴嬭澶囩洰鍓嶅寘鎷溅杞借蛋鑸�佹棤浜烘満璧拌埅浠ュ強鏃犱汉鑸硅蛋鑸笁绉嶇被鍨� * *******************************************************************************/ -class UnderwaySocketServer { +@Component +class UnderwaySocketServer( + private val sceneInfoRep: SceneInfoRep, + private val sourceTraceRep: SourceTraceRep +) { private val bossGroup = NioEventLoopGroup() private val workerGroup = NioEventLoopGroup() @@ -28,6 +40,10 @@ fun startElectricServer(port: Int, processor: BaseProcessor) { electricServer(processor)?.bind(port)?.sync() + } + + fun startWebSocketServer(port: Int) { + webSocketServer()?.bind(port)?.sync() } fun stopServer() { @@ -75,4 +91,17 @@ ?.addLast(ServerHandler(processor)) } }) + + /** + * 澶氬弬鏁拌蛋鑸湇鍔$ + */ + private fun webSocketServer():ServerBootstrap? = newServer(object : ChannelInitializer<NioSocketChannel>() { + override fun initChannel(p0: NioSocketChannel?) { + p0?.pipeline() + ?.addLast(HttpServerCodec()) + ?.addLast(HttpObjectAggregator(65535)) + ?.addLast(WebSocketServerProtocolHandler("/ws")) + ?.addLast(UnderwayWebSocketServerHandler(sceneInfoRep, sourceTraceRep)) + } + }) } \ No newline at end of file -- Gitblit v1.9.3