最近は、Flexを離れJBoss Nettyにはまっています。
Nettyとは、簡単に言えば(比較的)簡単にTCP/IPのサーバが作れるというものです。
その際に、接続処理や、切断処理、データのエンコード、デコードなどを簡単にできて、
なおかつ、大量の接続に耐えられるようにしたフレームワークです。
個人的には、構造を意識するとinetd上にアプリを作っている感じと、
Apacheのモジュールを作っている感じもあるのですが、
Javaゆえの簡易さも感じます。
WebSocketなどのサーバを作る場合の例や、HTTPのプロキシサーバの例など結構あるようです。
今、私はSMTPのProxyサーバを作っています。
受付は、HTTPですが、それをNettyを使ってSMTPのプロトコルに変換し、
メールを送信するというものです。
POP3/IMAPなどもやりたいのですが、
まずは、比較的簡単そうなSMTPです。
まあ、これはServletを使ったほうが簡単そうですが、
Nettyを使って、Sevletでは難しい機能も追加しやすくなります。
(一方で、難しいことも出てきますが・・・)
たとえば、送信時のリアルタイム承認機能などです。
送信時に、あらかじめ決められた承認者に対してPUSH配信を使って、
承認が得られるまで配信を保留などの場合などができます。
(送信者側の接続は切ってしまうこともできます。)
これは、あらかじめ他のアプリなどで接続を維持しておく必要がありますが、
その接続が維持できている人に対してポップアップなどを出しておくこともできます。
後は、メールではないものの、ECなどをやっているときにやりたかったのが、
先着XXX名様限定。
(別に、販売で無くてもいいのですが・・)
接続数を限定で、50名とかにして、それ以上は待機接続として待たせておいて、
購入をあきらめたら、先着順に新たな接続を許可するなどです。
(純粋な)HTTPを使っていると、どうしてもこのような処理はできません。
サーバからは、ブラウザが落ちている(あきらめた)のか、ただ見ているだけ(作業中)なのかがわからないためです。
それ以外にも、いろいろな応用範囲がありそうです。
Nettyの機能などはあまり、日本語で参考資料もないので、
気づいたことでも書いていければよいなと思っています。


