src/main/kotlin/com/flightfeather/uav/socket/UnderwaySocketServer.kt
@@ -1,5 +1,7 @@
package com.flightfeather.uav.socket
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 +11,22 @@
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长连接服务端
 * 用于接收解析走航监测数据,前端监测设备目前包括车载走航、无人机走航以及无人船走航三种类型
 * *******************************************************************************/
class UnderwaySocketServer {
@Component
class UnderwaySocketServer(
    private val underwayWebSocketServerHandler:UnderwayWebSocketServerHandler
) {
    private val bossGroup = NioEventLoopGroup()
    private val workerGroup = NioEventLoopGroup()
@@ -28,6 +37,10 @@
    fun startElectricServer(port: Int, processor: BaseProcessor) {
        electricServer(processor)?.bind(port)?.sync()
    }
    fun startWebSocketServer(port: Int, processor: BaseProcessor) {
        webSocketServer(processor)?.bind(port)?.sync()
    }
    fun stopServer() {
@@ -75,4 +88,17 @@
                ?.addLast(ServerHandler(processor))
        }
    })
    /**
     * 多参数走航服务端
     */
    private fun webSocketServer(processor: BaseProcessor):ServerBootstrap? = newServer(object : ChannelInitializer<NioSocketChannel>() {
        override fun initChannel(p0: NioSocketChannel?) {
            p0?.pipeline()
                ?.addLast(HttpServerCodec())
                ?.addLast(HttpObjectAggregator(65535))
                ?.addLast(WebSocketServerProtocolHandler("/ws"))
                ?.addLast(underwayWebSocketServerHandler)
        }
    })
}