2

私は Netty と Java はまったくの初心者ですが、今日の午後、Netty telnet サンプルに基づいてチャット サーバーを作成することができました。それはうまく機能し、「/」スラッシュコマンドが機能しているため、現在ctx-> setAttachment(name)に保存している名前を設定するなどのことができます。

接続したいバックエンドデータベースサーバーがあるので、この方法で名前を取得できますが、最初に各ユーザーに認証を追加する必要があります。もっとスラッシュコマンドを使えばそれができることはわかっています。しかし、イベント チェーンのハンドラーを使用してそれを実行できるかどうかを確認したかったのです。ユーザーが認証されているかどうかを確認し、認証されていない場合は認証ロジックを実行するハンドラーを用意します。そして、どういうわけかそれらが認証されていることを保存します。そして、それらが認証されている場合は、現在のチャット ハンドラーが代わりに作業を行うことができます。

これを行うためのリンクやヒントを教えてください。現在、Netty に関する私の知識は非常に基本的なものです。前もって感謝します。

4

1 に答える 1

4

それは本当に依存します..たとえば、認証を処理し、完了したらそれを削除するカスタム SimpleChannelUpstreamHandler を持つことができます。

このようなもの:

public class AuthHandler extends SimpleChannelUpstreamHandler {

    @Override
    public void messageReceived( ChannelHandlerContext ctx, MessageEvent e) throws Exception {
        if (auth(e)) {
            // remove handler after auth was done
            ctx.getPipeline().remove(this);
        }
    }

    // Returns true if auth was successfully
    private boolean auth(MessageEvent e) {
        ....
    }
}
于 2012-04-13T06:07:26.160 に答える