我有一个使用传统 BIO(阻塞 IO)的遗留应用程序(HTTP 和原始 TCP),我想开始用 Netty 替换它。
Netty 如何与传统的 BIO 客户端一起工作?如果我先用 Netty 替换服务器组件并保留 BIO 客户端,会有什么问题吗?
此外,Netty 构建的服务器是否可以替代旨在为浏览器客户端提供服务的典型 HTTP Web 服务器?有什么问题吗?
谢谢
最佳答案
我的理解是netty支持阻塞(org.jboss.netty.channel.socket.oio
)和非阻塞(org.jboss.netty.channel.socket.nio
) 操作。参见 http://docs.jboss.org/netty/3.2/guide/html/architecture.html第 2.2 节。
在阻塞和非阻塞之间切换很容易,所以你可以尝试使用 NIO,如果你的客户端不行,你可以切换到 OIO。您将您希望支持的 IO 类型设置为 ChannelFactory
// NIO - non blocking
ChannelFactory factory =
new NioSeverSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool());
//OIO - blocking
ChannelFactory factory =
new OioServerSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool());
已经实现了许多现有的基于 netty 的 HTTP 网络服务器/框架。例如,webbit , xitrum和 play framework .我敢肯定还有更多。这些只是我能想到的。
如果你想自己实现,一个很好的起点是 org.jboss.netty.example.http
包中的示例。
关于browser - 带有阻塞 IO 客户端、浏览器的 Netty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8467709/