Socket连接Demo&&长连接Demo

一、Socket Demo

netty可以用来作为socket开发,以rpc的方式,支持自定义协议,这很适用于微服务之间的通信。以一个简单的聊天程序为例:

1.Server端:

(1)主函数

Socket连接Demo&&长连接Demo_第1张图片

(2)Handler

Socket连接Demo&&长连接Demo_第2张图片

(3)Initializer

Socket连接Demo&&长连接Demo_第3张图片

注:netty会自动移除断开的连接,因此无需在channelGroup中remove这个channel

2.Client端:

(1)主函数

Socket连接Demo&&长连接Demo_第4张图片

(2)Handler

Socket连接Demo&&长连接Demo_第5张图片

(3)Initializer

Socket连接Demo&&长连接Demo_第6张图片

二、长连接Demo

WebSocket是长连接,全双工,基于HTTP,亦可用于非浏览器。

1.Server端:

(1)主函数

Socket连接Demo&&长连接Demo_第7张图片

(2)Handler

Socket连接Demo&&长连接Demo_第8张图片

(3)Initializer

Socket连接Demo&&长连接Demo_第9张图片

2.Client端:


Socket连接Demo&&长连接Demo_第10张图片

注:客户端和服务端建立了长连接,如果客户端开启了飞行模式或者强制关机,handlerRemoved不会被调用,即服务端无法感知客户端已经断开连接-->需要心跳

心跳主要依赖:IdleStateEvent

通过pipeline.addLast(newIdleStateHandler(5,7,3, TimeUnit.SECONDS));//在指定的时间没有读/写/读写,就触发事件

你可能感兴趣的:(Socket连接Demo&&长连接Demo)