nettyに関する2番目の質問になります。私たちはそれから始まっています。そして我々は
HTTPと長いポーリングのHTTPを使用する必要があるデザインを持っています
HTTPストリーミング。私たちは5kから50kの接続ユーザをオープンな接続で見積もっています。私たちはtomcatが処理しないことを知っているので、私たちはその目的を達成するためにネットを見ます。nettyを使用したサーバープッシュの設計
デザインはシンプルでなければなりませんが、ウェブソケットを使用することはできません(websocket/stompサポートでnettyの上にhornetQを使用するのが大好きです)。
基本的には、接続されたクライアントでサーバープッシュイベント(JS SSEを使用することさえできます)があります。
クライアントが
だから私たちはイベントを生成サーバ側のプロセスを持つことになります(ただし、JMSのキューのようなはるかに簡単)URLに基づいて、エンドポイントにサブスクライブし、(私たちが興味を持ってチャンネルを通知しますこれに対して単純なオブザーバーパターンを使用しています)。
したがって、チャネルはそれらのプロセスにサブスクライブし、それらからイベントを受信します。
今日の私の質問は、私たちが使用したデザインアプローチが、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);
}
よろしく
洞察力に感謝します。コードは非常に単純化されています。私はより多くの掃除を追加する必要があります:)。私は申し訳ありませんが、私の間違いは、私は実際に長いポーリングではないHTTPストリーミングを検討している、クライアント上で私たちは接続を開き、それから読書を続けます。私はそれからいくつかの良い洞察を得るかもしれないプロジェクトをチェックします。 –