具有阻塞 IO 客户端、浏览器的 Netty

Jav*_*Guy 3 browser io blocking netty

我有一个使用传统 BIO(阻塞 IO)的遗留应用程序(HTTP 和原始 TCP),我想开始用 Netty 替换它。

Netty 如何与传统的 BIO 客户端一起工作?如果我先用 Netty 替换服务器组件并保留 BIO 客户端,会不会有任何问题?

此外,Netty 构建的服务器能否取代用于为浏览器客户端提供服务的典型 HTTP Web 服务器?有什么问题吗?

谢谢

Vee*_*ebs 5

我的理解是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());
Run Code Online (Sandbox Code Playgroud)

已经实现了许多现有的基于 netty 的 HTTP Web 服务器/框架。例如,webbitxitrumplay 框架。我确定还有更多。这些只是我能想到的。

如果您想实现自己的,一个好的起点是org.jboss.netty.example.http包中的示例。