在本章中,我们学习了如何使用 Netty 中的 WebSocket 来管理 Web 应用程序中的实时数据。我们讲了所支持的数据类型,并讨论了你可能会遇到的问题。虽然 WebSockets 并不能在所有情况下使用,但应该清楚,它代表了 web 技术发展上的一个重要进步。 接下来我们来谈谈“Web2.0”开发中的另一项技术。也许你还没有听说过“SPDY”,但只要你读了下一章,你就很可能在你将来的开发中
使用测试工具,如JUnit单元测试是一个非常有效的方式保证代码的正确性,提高其可维护性。在本章中,您了解了如何测试定制 ChannelHandler 来验证他们的工作。 在接下来的章节我们将专注于写 Netty “真实世界” 的应用程序。即使我们任何进一步的测试代码的例子,但希望你能记住我们的测试方法的探讨及其重要性。
Netty 的提供了编解码器和处理程序,可以组合和扩展来实现一个非常广泛的处理场景。此外,他们在许多大型系统被证明是健壮的组件。 请注意我们只介绍最常见的例子。API文档提供完整的描述。
在这一章里,我们研究了 Netty 的 codec API 来编写解码器和编码器。我们还学习了为什么最好使用这个而不是纯ChannelHandler API。 我们看到不同的抽象编解码器类提供支持来处理在一个类中实现解码和编码。另一方面,如果我们需要更大的灵活性,希望结合现有实现我们也可以选择结合他们无需扩展抽象编解码器的任何类。 在下一章,我们将讨论 ChannelHandler 的实现和编解码
本章带你深入窥探了一下 Netty 的数据处理组件: ChannelHandler。我们讨论了 ChannelHandler 之间是如何链接的以及它在像ChannelInboundHandler 和 ChannelOutboundHandler这样的化身中是如何与 ChannelPipeline 交互的。 下一章将集中在 Netty 的编解码器的抽象上,这种抽象使得编写一个协议编码器和解码器比使用
这一章专门讨论了 Netty 基于 ByteBuf 的数据容器。我们开始说明了Netty 比 JDK 更多的优点。我们还突出适合具体情况的 API 的可用变型。 在下一章中,重点是 ChannelHandler,它提供了数据处理逻辑的载体。 ChannelHandler 大量使用了 ByteBuf。
在本章中,我们研究了传输,他们的实现和使用,以及展示了如何用 Netty来开发。 我们介绍了 Netty 的传输,并解释他们的行为。我们还知道了他们的最低要求,因为不是所有的传输都使用相同的 Java 版本的工作或者可能是仅在特定的操作系统可用。最后,我们讲了匹配传输到特定的用例。 在下一章中,我们的重点是 ByteBuf 和 ByteBufHolder,Netty 中的数据容器。我们将介绍如何使
在本章中,我们提出了 Netty 的关键部件和概念的概述,以及他们是如何结合在一起的。许多下面的章节都致力于深入研究各个组件和概念,应该可以帮助你了解全貌。 下一章将探讨 Netty 并提供不同的传输,以及如何选择最适合您应用程序的传输。
在本章中,您构建并运行你的第一 个Netty 的客户端和服务器。虽然这是一个简单的应用程序,它可以扩展到几千个并发连接。 在下面的章节中,我们会看到的更多 Netty 如何简化可扩展和多线程的例子。我们还将更深入的了解 Netty 支持的关注点分离的构建理念;通过提供正确的抽象将业务逻辑从网络逻辑中解耦,Netty 可以很容易地跟上迅速发展的要求,而不损害系统的稳定性。 在下一章中,我们将提供的
良好的故障排除技能由一段时间内学会掌握的学科组合组成。 当您遇到FreeRADIUS问题时,您应该采用逻辑方法来识别并解决问题。 这包括以下内容: 不要惊慌。 问问自己最近发生了什么变化。 在进行任何更改之前,请对配置进行完整备份。 记住日志文件。 记住调试模式。 记住FAQ。 引入故意错误有时有助于了解某些内容如果被破坏后会如何表现,并将其与不应该表现的内容进行比较。 Google是您的朋友(G
总结 对于任何必须集成到更大的RADIUS服务器网络中的FreeRADIUS部署而言,领域的创建和代理的设置都是自然而然的过程。让我们来看看本章要记住的重点: 领域在proxy.conf文件中定义,用于确定是否必须将请求转发到外部主服务器。 LOCAL,NULL和DEFAULT是特殊领域。 LOCAL始终存在,用于取消代理。 NULL用于在没有领域的情况下对用户名进行分组,DEFAULT用于对来自
总结 虽然RADIUS协议不需要字典,但它们是FreeRADIUS服务器的核心部分。以下是要记住的关于词典的重要要点列表: 不要修改FreeRADIUS安装的预定义词典文件。 请向NAS供应商咨询是否有任何新的支持的radius属性,以便更新字典。 必须在预定义的字典文件之后获取更新的字典,以便拥有最新的受支持属性。 字典通过将属性名映射到AVP类型号来为我们提供帮助。 integer类型的属性可
总结 以下是我们在本章中提到的一些要点: EAP是一个以可扩展性为核心特征的框架。这允许引入新的EAP方法而无需对验证器进行任何更改。 EAP允许我们在使用EAP-TTLS或PEAP时通过第三方RADIUS服务器代理请求,而不会泄露用户的用户名和密码。 隧道EAP方法有两个身份,可以相互比较。 建议使用和分发专用的自签名CA以获得最大安全性。教育用户安装并指定在请求者配置中使用自签名CA. 在向R
总结 让我们列出一些要记住的模块关键点: 模块有助于扩展FreeRADIUS的功能。 一个模块可以通过使用命名部分来运行不同的实例。 模块通过FreeRADIUS配置目录中modules子目录下的文本文件进行配置。 部分内的模块顺序非常重要。 模块具有影响请求流的返回代码。 我们可以使用unlang来测试模块的特定返回码。 某些模块可能会丢失,因为它们是单独包装的,必须先单独安装才能使用。 下一章
总结 这里概述了虚拟服务器上的一些关键点: FreeRADIUS默认启用两个虚拟服务器。 它们被称为默认和内部隧道。 虚拟服务器在sites-available目录中定义,并通过将其链接到启用站点的目录来激活。 可以在全局侦听和客户端部分中指定特定虚拟服务器的使用。 虚拟服务器可以包含本地侦听和客户端部分。 sites-available目录中提供了示例虚拟服务器,可用作特殊要求的模板。 虚拟服务