我有两个系统需要整合,一个完全使用内部的网络堆栈,另一个(具体而言是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有什么建议吗?我发现javadoc在这个领域相当缺乏。
具体问题如下:
- 我的实现应该如何响应类似“InterestOps”之类的内容? - 对于从整个堆栈到达的消息,ServerChannel.write是否被调用?两种不同的重载是什么情况? - 我需要如何实现ServerChannel.(dis)connect? - 我是否仍然应该通过ServerBootstrap完成所有这些操作,还是那太高级了?
谢谢!在有人问之前:是的,我很想用基于Netty的定制网络堆栈替换我们的网络堆栈,但这是一个大型的工程任务,我很难为其辩护。
为了实现这一点,我需要一个像套接字一样的Netty对象,但允许我自己做所有“低级”工作 - 基本上只需用HTTP包装数据并将其传递到我们自定义的网络堆栈中。换句话说,我不希望Netty为我管理任何套接字 - 我想在套接字和Netty之间插入自己的东西。
我怀疑正确的方法是扩展AbstractServerChannel并创建一个*Factory类,但我不确定Netty的其余部分希望数据如何通过ServerChannel流动。
我的自定义ServerChannel需要能够:
- 通过我们现有的HTTP系统通知Netty新客户端连接 - 当数据到达时向Netty推送数据 - 在客户端请求时从Netty轮询新消息 - 当HTTP会话超时(或RTMP流被干净地关闭)时清除Netty状态
对于如何实现ServerChannel、ServerChannelFactory有什么建议吗?我发现javadoc在这个领域相当缺乏。
具体问题如下:
- 我的实现应该如何响应类似“InterestOps”之类的内容? - 对于从整个堆栈到达的消息,ServerChannel.write是否被调用?两种不同的重载是什么情况? - 我需要如何实现ServerChannel.(dis)connect? - 我是否仍然应该通过ServerBootstrap完成所有这些操作,还是那太高级了?
谢谢!在有人问之前:是的,我很想用基于Netty的定制网络堆栈替换我们的网络堆栈,但这是一个大型的工程任务,我很难为其辩护。