Socket连接Demo&&长连接Demo
2017-10-22 本文已影响0人
第七感_12d9
一、Socket Demo
netty可以用来作为socket开发,以rpc的方式,支持自定义协议,这很适用于微服务之间的通信。以一个简单的聊天程序为例:
1.Server端:
(1)主函数

(2)Handler

(3)Initializer

注:netty会自动移除断开的连接,因此无需在channelGroup中remove这个channel
2.Client端:
(1)主函数

(2)Handler

(3)Initializer

二、长连接Demo
WebSocket是长连接,全双工,基于HTTP,亦可用于非浏览器。
1.Server端:
(1)主函数

(2)Handler

(3)Initializer

2.Client端:

注:客户端和服务端建立了长连接,如果客户端开启了飞行模式或者强制关机,handlerRemoved不会被调用,即服务端无法感知客户端已经断开连接-->需要心跳。
心跳主要依赖:IdleStateEvent
通过pipeline.addLast(newIdleStateHandler(5,7,3, TimeUnit.SECONDS));//在指定的时间没有读/写/读写,就触发事件