0

想法是将 apache vysper 集成到现有的 netty 应用程序中。是否可以将客户端的 ChannelBuffer 作为 mina'a ChannelBuffer 连接到 netty,以便将其委托给 vysper?

想法是为 apache vysper 制作基于 netty 的自定义端点,获取 ChanellBuffer 并将其传递给 vysper。

4

2 回答 2

0

Apache Vysper 使用 MINA,一种类似于 netty 的非阻塞 I/O 框架。

当我设计 Vysper 时,我尽量不要将 MINA 与 Vysper 的其余部分耦合得太紧。所以理论上应该可以用netty替换MINA,如果你想走那条路。查看源代码,您需要从包 https://svn.apache.org/repos/asf/mina/vysper/trunk/server/core/src/main/java/org/apache移植所有功能/vysper/米娜 到netty并替换它的用法。这是可行的,但需要一些工作。此外,Vypser 使用 XMPP 作为基于/是 XML 子集的协议。Vysper 使用非阻塞 XML 解析器“nbxml”,它是 Vysper 的子项目。(https://svn.apache.org/repos/asf/mina/vysper/trunk/nbxml)你也需要用netty版本的nbxml替换它。在 dev@mina.apache.org 的 Vysper 邮件列表中,我可以为您提供详细的帮助。

另一种方法是使用 netty 端点,并且 - 正如 Norman 所建议的 - 以某种方式将缓冲区传递给 Vysper/MINA。这听起来像是一种优雅的方法,但我怀疑它是否比以前的方法更可行。我不知道 netty 是否有符合 Vysper 需求的非阻塞 XML 解析器。可能需要一些丑陋的特技才能将网状包裹在 MINA 周围。

最后一个建议是按原样使用 Vypser。MINA 在过去几年里并没有像 netty 那样受到那么多的喜爱,但它也是一个非阻塞 IO 框架。如果您真的坚持使用 netty,请考虑将其用作代理,在一个端点使用 netty,在另一个端点使用 Vysper/MINA,然后将您在 netty 端点收到的字节路由到 Vysper/MINA。

于 2012-08-22T09:56:32.833 回答
0

我想您可以编写自己的 impl 来包装它。或者使用支持的字节数组并包装它。

于 2012-08-20T17:35:18.800 回答