package com.flightfeather.obd.socket
|
|
import io.netty.bootstrap.ServerBootstrap
|
import io.netty.channel.ChannelInitializer
|
import io.netty.channel.ChannelOption
|
import io.netty.channel.nio.NioEventLoopGroup
|
import io.netty.channel.socket.SocketChannel
|
import io.netty.channel.socket.nio.NioServerSocketChannel
|
import io.netty.channel.socket.nio.NioSocketChannel
|
|
/**
|
* socket长连接服务端
|
* 2019.8.26
|
* @author riku
|
*/
|
class SocketServerClient {
|
|
// val sessionMap = HashMap<String, IoSession>
|
|
fun startServer(port: Int) {
|
initialize()?.bind(port)?.sync()
|
?.channel()?.closeFuture()?.sync()
|
}
|
|
private fun initialize(): ServerBootstrap? {
|
val bossGroup = NioEventLoopGroup()
|
val workerGroup = NioEventLoopGroup()
|
|
try {
|
return ServerBootstrap()
|
.group(bossGroup, workerGroup)
|
.channel(NioServerSocketChannel::class.java)
|
.childHandler(object : ChannelInitializer<NioSocketChannel>() {
|
override fun initChannel(p0: NioSocketChannel?) {
|
p0?.pipeline()?.addLast(ServerHandler())
|
}
|
})
|
.option(ChannelOption.SO_BACKLOG, 128)
|
.childOption(ChannelOption.SO_KEEPALIVE, true)
|
} catch (e: Throwable) {
|
e.printStackTrace()
|
} finally {
|
bossGroup.shutdownGracefully()
|
workerGroup.shutdownGracefully()
|
}
|
|
return null
|
}
|
}
|