在我关于netty的第二个问题中。我们才刚刚开始。我们有一个设计,我们需要使用带有长轮询HTTP 流的 HTTP。我们估计有 5k - 50k 连接用户打开连接。我们知道 tomcat 不会处理,所以我们查看 netty 来完成任务。
设计应该足够简单,但我们不能使用 websockets(我们希望在 netty 之上使用 hornetQ 并支持 websocket/stomp)但我们不能。
所以基本上我们将在连接的客户端中有服务器推送事件(我们甚至可以使用 JS SSE 来做到这一点)。
客户端将根据 url 订阅端点(就像 JMS 上的队列,不过要简单得多)
所以我们将在服务器端有一个进程来生成事件并通知感兴趣的通道(我们为此使用了一个简单的观察者模式)。
因此,频道订阅了这些进程,然后从它们接收事件。
我今天在这里的问题是看看我们使用的设计方法是否考虑到netty的架构是正确的。
public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
service.subscribe(this);
this.context = ctx;
ctx.sendUpstream(e);
}
//this method gets called by the service when a server event happens
public void onUpdate(String message) {
ChannelBuffer buffer = Channels.buffer(message.getBytes().length());
buffer.writeBytes(message.getBytes());
ChannelFuture future = Channels.future(this.context.getChannel());
future.addListener(ChannelFutureListener.CLOSE);
Channels.write(this.context,future,buffer);
}
问候