<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Encoder(編碼器) 回顧之前的定義,encoder 是用來把出站數據從一種格式轉換到另外一種格式,因此它實現了 ChanneOutboundHandler 。正如你所期望的一樣,類似于 decoder,Netty 也提供了一組類來幫助你寫 encoder,當然這些類提供的是與 decoder 相反的方法,如下所示: - 編碼從消息到字節 - 編碼從消息到消息 ### MessageToByteEncoder 之前我們學習了如何使用 ByteToMessageDecoder 來將字節轉換成消息,現在我們使用 MessageToByteEncoder 實現相反的效果。 Table 7.3 MessageToByteEncoder API | 方法名稱 | 描述 | |-----|-----| | encode | The encode method is the only abstract method you need to implement. It is called with the outbound message, which this class will encodes to a ByteBuf. The ByteBuf is then forwarded to the next ChannelOutboundHandler in the ChannelPipeline. | 這個類只有一個方法,而 decoder 卻是有兩個,原因就是 decoder 經常需要在 Channel 關閉時產生一個“最后的消息”。出于這個原因,提供了decodeLast(),而 encoder 沒有這個需求。 下面示例,我們想產生 Short 值,并想將他們編碼成 ByteBuf 來發送到 線上,我們提供了 ShortToByteEncoder 來實現該目的。 ![](https://box.kancloud.cn/2015-08-18_55d312927ded5.jpg) Figure 7.3 ShortToByteEncoder 上圖展示了,encoder 收到了 Short 消息,編碼他們,并把他們寫入 ByteBuf。 ByteBuf 接著前進到下一個 pipeline 的ChannelOutboundHandler。每個 Short 將占用 ByteBuf 的兩個字節 Listing 7.5 ShortToByteEncoder encodes shorts into a ByteBuf ~~~ public class ShortToByteEncoder extends MessageToByteEncoder<Short> { //1 @Override public void encode(ChannelHandlerContext ctx, Short msg, ByteBuf out) throws Exception { out.writeShort(msg); //2 } } ~~~ 1. 實現繼承自 MessageToByteEncoder 1. 寫 Short 到 ByteBuf Netty 提供很多 MessageToByteEncoder 類來幫助你的實現自己的 encoder 。其中 WebSocket08FrameEncoder 就是個不錯的范例。可以在 io.netty.handler.codec.http.websocketx 包找到。 ### MessageToMessageEncoder 我們已經知道了如何將入站數據從一個消息格式解碼成另一個格式。現在我們需要一種方法來將出站數據從一種消息編碼成另一種消息。MessageToMessageEncoder 提供此功能,見表7.4,同樣的只有一個方法,因為不需要產生“最后的消息”。 Table 7.4 MessageToMessageEncoder API | 方法名稱 | 描述 | |-----|-----| | encode | The encode method is the only abstract method you need to implement. It is called for each message written with write(...) to encode the message to one or multiple new outbound messages. The encoded messages are then forwarded | 下面例子,我們將要解碼 Integer 消息到 String 消息。可簡單使用 MessageToMessageEncoder ![](https://box.kancloud.cn/2015-08-18_55d3129286cec.jpg) Figure 7.4 IntegerToStringEncoder encoder 從出站字節流提取 Integer,以 String 形式傳遞給ChannelPipeline 中的下一個 ChannelOutboundHandler 。清單7.6顯示了細節。 Listing 7.6 IntegerToStringEncoder encodes integer to string ~~~ public class IntegerToStringEncoder extends MessageToMessageEncoder<Integer> { //1 @Override public void encode(ChannelHandlerContext ctx, Integer msg, List<Object> out) throws Exception { out.add(String.valueOf(msg)); //2 } } ~~~ 1. 實現繼承自 MessageToMessageEncoder 1. 轉 Integer 為 String,并添加到 MessageBuf 更復雜 的 MessageToMessageEncoder 應用案例,可以查看 io.netty.handler.codec.protobuf 包下的 ProtobufEncoder
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看