<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ChannelInterceptor 攔截器攔截 ws 協議的請求/響應(`send/subscribe`),不攔截 http 協議的請求/響應。 [TOC] # 1. ChannelInterceptor使用步驟 攔截器使用步驟如下: **1. 實現攔截器接口** ```java //方法調用順序:preSend -> postSend -> afterSendCompletion public class SocketChannelInterceptor implements ChannelInterceptor { /** * 消息發送到目標方法之前被調用 * * @param message * @param channel * @return */ @Override public Message<?> preSend(Message<?> message, MessageChannel channel) { System.out.println("preSend->"); return ChannelInterceptor.super.preSend(message, channel); } /** * 消息正在發送過程中被調用,主要用這個方法就行 * * @param message * @param channel * @param sent */ @Override public void postSend(Message<?> message, MessageChannel channel, boolean sent) { StompHeaderAccessor header = StompHeaderAccessor.wrap(message); System.out.println("postSend->" + header.getDestination()); } /** * 消息發送完成之后被調用,一般用來做資源釋放等工作。 * * @param message * @param channel * @param sent * @param ex */ @Override public void afterSendCompletion(Message<?> message, MessageChannel channel, boolean sent, Exception ex) { System.out.println("afterSendCompletion->"); ChannelInterceptor.super.afterSendCompletion(message, channel, sent, ex); } } ``` **2. 配置類中添加攔截器** ```java @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { @Override public void configureClientInboundChannel(ChannelRegistration registration) { registration.interceptors(new SocketChannelInterceptor()); } @Override public void configureClientOutboundChannel(ChannelRegistration registration) { registration.interceptors(new SocketChannelInterceptor()); } } ``` <br/> # 2. 攔截器實現用戶上線下線通知功能 ```java public class SocketChannelInterceptor implements ChannelInterceptor { @Override public void postSend(Message<?> message, MessageChannel channel, boolean sent) { StompHeaderAccessor header = StompHeaderAccessor.wrap(message); if (header.getCommand() == null) return; if (header.getCommand().equals(StompCommand.CONNECT)) { System.out.println("用戶上線了"); } if ( header.getCommand().equals(StompCommand.DISCONNECT)) { System.out.println("用戶下線了"); } } } ```
                  <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>

                              哎呀哎呀视频在线观看