-
Netty 空闲的连接和超时
空闲的连接和超时
连接管理
到目前为止,我们的讨论都集中在Netty 通过专门的编解码器和处理器对HTTP 的变型HTTPS 和WebSocket 的支持上。
只要你有效地管理你的网络资源,这些技术就可以使得你的应用程序更加高效、易用和安全。
所以,让我们一起来探讨下首先需要关注的——连接管理吧。
核心 API
检测空闲连接以及超时对于及时释放资源来说是至关重要的。
由于这是一...
2017-11-16 11:23:06 |
Netty
-
Netty HTTP/HTTPS
构建基于Netty 的HTTP/HTTPS 应用程序
HTTP/HTTPS 是最常见的协议套件之一,并且随着智能手机的成功,它的应用也日益广泛,因为对于任何公司来说,拥有一个可以被移动设备访问的网站几乎是必须的。
这些协议也被用于其他方面。
许多组织导出的用于和他们的商业合作伙伴通信的 WebService API 一般也是基于HTTP(S)的。
接下来,我们来看看 Netty 提供...
2017-11-16 11:23:06 |
Netty
-
Netty 基于分隔符的协议和基于长度的协议
解码基于分隔符的协议和基于长度的协议
在使用 Netty 的过程中,你将会遇到需要解码器的基于分隔符和帧长度的协议。
下一节将解释 Netty 所提供的用于处理这些场景的实现。
基于分隔符的协议
基于分隔符的(delimited)消息协议使用定义的字符来标记的消息或者消息段(通常被称为帧)的开头或者结尾。
由RFC文档正式定义的许多协议(如SMTP、POP3、IMAP以及Telne...
2017-11-16 11:23:06 |
Netty
-
Netty 写大型数据
写大型数据
因为网络饱和的可能性,如何在异步框架中高效地写大块的数据是一个特殊的问题。
由于写操作是非阻塞的,所以即使没有写出所有的数据,写操作也会在完成时返回并通知ChannelFuture。
当这种情况发生时,如果仍然不停地写入,就有内存耗尽的风险。
所以在写大型数据时,需要准备好处理到远程节点的连接是慢速连接的情况,这种情况会导致内存释放的延迟。
让我们考虑下将一个文件内容写...
2017-11-16 11:23:06 |
Netty
-
Netty-14-抽象编解码器
抽象的编解码器类
虽然我们一直将解码器和编码器作为单独的实体讨论,但是你有时将会发现在同一个类中管理入站和出站数据和消息的转换是很有用的。
Netty 的抽象编解码器类正好用于这个目的,因为它们每个都将捆绑一个解码器/编码器对,以处理我们一直在学习的这两种类型的操作。
正如同你可能已经猜想到的,这些类同时实现了ChannelInboundHandler 和ChannelOutbound...
2017-11-16 11:23:06 |
Netty
-
Netty-14-encoder 编码器
编码器
回顾一下我们先前的定义,编码器实现了ChannelOutboundHandler,并将出站数据从一种格式转换为另一种格式,和我们方才学习的解码器的功能正好相反。
Netty 提供了一组类,用于帮助你编写具有以下功能的编码器:
将消息编码为字节;
将消息编码为消息
抽象类 MessageToByteEncoder
我们将首先从抽象基...
2017-11-16 11:23:06 |
Netty
-
Netty-14-decoder 解码器
解码器
在这一节中,我们将研究Netty 所提供的解码器类,并提供关于何时以及如何使用它们的具体示例。
这些类覆盖了两个不同的用例:
将字节解码为消息——ByteToMessageDecoder 和 ReplayingDecoder;
将一种消息类型解码为另一种——MessageToMessageDecoder。
因为解码器是负责将入站数据...
2017-11-16 11:23:06 |
Netty
-
Netty-14-编解码器
编解码器
就像很多标准的架构模式都被各种专用框架所支持一样,常见的数据处理模式往往也是目标实现的很好的候选对象,它可以节省开发人员大量的时间和精力。
当然这也适应于本章的主题:编码和解码,或者数据从一种特定协议的格式到另一种格式的转换。这些任务将由通常称为编解码器的组件来处理。
Netty 提供了多种组件,简化了为了支持广泛的协议而创建自定义的编解码器的过程。
例如,如果你正在构建一...
2017-11-16 11:23:06 |
Netty