Netty問題總結

來源:互聯網
上載者:User

1. 在handler中的messageReceived方法裡,使用super.handleUpstream(ChannelHandlerContext, MessageEvent);需要注意會產生死迴圈

2.  Netty中的訊息傳遞,都必須以位元組的形式,以ChannelBuffer為載體傳遞。簡單的說,就是你想直接寫個字串過去,對不起,拋異常。雖然,Netty定義的writer的介面參數是Object的,這可能也是會給新上手的朋友容易造成誤會的地方。Netty源碼中,是這樣判斷的:

SendBuffer acquire(Object message) {        if (message instanceof ChannelBuffer) {            return acquire((ChannelBuffer) message);        } else if (message instanceof FileRegion) {            return acquire((FileRegion) message);        }         throw new IllegalArgumentException(                "unsupported message type: " + message.getClass());    }

因此要發送訊息的寫法為:

 ChannelBuffer buffer = ChannelBuffers.buffer(msg.length()*2); buffer.writeBytes(msg.getBytes()); e.getChannel().write(buffer);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.