本系列文章记录项目的一些实战经验,从基本使用到底层原理、源码分析等。
1、简单的HTTP服务器,HttpServerCodec:HTTP SERVER 编码解码器。封装了HttpServerRequestDecoder和HttpServerResponseEncoder
2、简单的WebSocket:
? ? ? ? server端:HttpServerCodec +?ChunkedWriteHandler+HttpObjectAggregator+WebSocketServerProtocolHandler
? ? ? ? client端:JS实现见程序示例;或者Java实现:HttpClientCodec+ChunkedWriteHandler+HttpObjectAggregator+WebSocketClientProtocolHandler
? ? ? ? 另外服务器和客户端之间的消息传输基于WebSocketFrame消息类型(共六种)
3、我们了解这些后,最好的学习方式是先回过头来,学习一下RPC:
? ? 1)protobuf
? ? ? ? Netty提供官方的Handler支援了protobuf,见程序示例。
? ? 2)thrift
? ? ? ? Apache下的一个知名项目,Linux下安装需要安装好g++,然后编译安装
? ? ? ? 对于Java的支持:
? ? ? ? ? ? 写法很像Android的AIDL,RemoteService -> Client
? ? ? ? ? ? server的组成元素:transport、protocol、server
? ? ? ? ? ? 比较常用的server,THsHaServer:
????????????THsHaServer:1)配置server的transport -- TNonblockingServer的进一步封装,另外TNonblockingServerd的transportFactory必须用TFramedTransport.Factory。 ?2)配置server的protocol --?TCompactProtocol(压缩的)或者TBinaryProtocol(二进制的)等等。 ?3)自定义的Processor的实现,thrift编译器自动生成。
? ? ? ? ? ? 需要注意的是client端的protocol和transport需要和server端对应
? ? 3)grpc
? ? ? ? ? ? 努力更新中。。。