一、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));//在指定的时间没有读/写/读写,就触发事件
网友评论