【发布时间】:2012-02-18 00:03:19
【问题描述】:
我想要集成两个系统,一个使用完全内部的网络堆栈,另一个(特别是 Flazr)使用 Netty。我想通过我们内部的 HTTP 堆栈代理基于 Flazr Netty 的 RTMP 流,以生成一个使用 RTMPT 的系统。
为了实现这一点,我需要一个像套接字一样的 Netty 对象,但让我自己做所有“低级”的事情——基本上只是将数据包装在 HTTP 中并将其传递到我们的自定义网络堆栈。换句话说,我不希望 Netty 为我管理任何套接字 - 我想在套接字和 Netty 之间插入我自己的东西。
我怀疑解决这个问题的正确方法是扩展 AbstractServerChannel 并创建一个 *Factory 类,但我不确定 Netty 的其余部分如何期望数据通过 ServerChannel 流动。
我的自定义 ServerChannel 需要能够:
当新客户端通过我们现有的 HTTP 系统连接时通知 Netty
将数据推送到 Netty,当它到达时
应客户端请求,轮询来自 Netty 的新消息
在 HTTP 会话超时(或 RTMP 流完全关闭)时清理 Netty 状态
关于如何实现 ServerChannel、ServerChannelFactory 的任何指针?我发现这方面的 javadocs 相当缺乏。
一些具体问题:
我的实现应该如何响应“InterestOps”类型的东西?
ServerChannel.write 是对从堆栈一路向下传来的消息调用的内容吗?这两种不同的重载是怎么回事?
我需要如何实现 ServerChannel.(dis)connect?
我是否还应该通过 ServerBootstrap 来完成所有这些工作,或者这对这些工作来说太高级了?
谢谢!
在任何人问:是的之前,我很想用基于 Netty 的网络堆栈替换我们的自定义网络堆栈,但这是一项大型工程任务,我很难证明其合理性。婴儿步。
【问题讨论】:
标签: netty