Spring WebSocket初探1(Spring WebSocket入門チュートリアル)

4705 ワード

See more:Spring WebSocket reference全体の例はWiseMenuFrameWorkの一部であり、プロジェクト全体をクローンすることができ、友达が必要であれば、私は独立したdemoを整理することができます.
WebSocketはhtml 5がもたらす重大な特性であり、ブラウザとサービス側の間で本当に長い接続が可能になりました.この文章では、SpringのWebSocketのサポートと使用を垣間見ることができます.
きそかんきょう
Springフレームワークを迅速に構築し、Spring bootを使用します.ここではSpringBootについては議論しませんが、「Springプロジェクトを迅速に構築するワンストップソリューション」であることだけを知っていればOKです.SpringのWebSocket機能を使用するには、依存を追加する必要があります.
    
        org.springframework.boot    
        spring-boot-starter-websocket


これでWebSocketの基本機能が簡単にオープンしました.
関連構成
WebSocketを構成します.まずWebSocketConfigクラスを追加し、グローバルな構成情報を定義し、JavaConfigの形式:WebSocketConfigを使用します.java
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {    
    @Override    
    public void registerStompEndpoints(StompEndpointRegistry registry) {        
        registry.addEndpoint("/socket").withSockJS();       
    }    
    @Override    
    public void configureMessageBroker(MessageBrokerRegistry registry) {  
        registry.enableSimpleBroker("/topic");      
        registry.setApplicationDestinationPrefixes("/app"); 
    }
}

関連説明:
  • registerStompEndpoints(StompEndpointRegistry registry)この方法の役割は、クライアントの接続を受信するためにサービス・エンド・ポイントを追加することである.
  • registry.addEndpoint("/socket")は、/socketエンドポイントが追加されたことを示し、クライアントはこのエンドポイントを介して接続することができる.
  • withSockJS()の役割はSockJSサポートを開始することであり、
  • configureMessageBroker(MessageBrokerRegistry config)この方法の役割は、メッセージエージェントを定義することであり、一般的には、メッセージ接続要求を設定する様々な仕様情報である.
  • registry.enableSimpleBroker("/topic")は、クライアントサブスクリプションアドレスのプレフィックス情報、すなわちクライアントがサービス側メッセージを受信アドレスのプレフィックス情報(比較的回り道して、全体の例を見てみれば、だいたいわかる)
  • を表す.
  • registry.setApplicationDestinationPrefixes("/app")は、クライアントがサービス側にメッセージを送信アドレスのプレフィックス
  • を意味するサービス側受信アドレスのプレフィックスを指す.
    上記の2つの方法で定義された情報は、クライアントが受信するアドレス接頭辞を定義し、クライアントが送信するアドレスを定義する接頭辞とは逆です.
    これまでフレームワーク全体の構成情報が完了していましたが、以下に公告を送る例を書いて、WebSocketの魅力を示します!
    バックグラウンドビジネスの作成
    上記の基本構成情報があれば、基本機能を記述することができます.ここでは、まず2つの知識点を簡単に説明します.
  • MessageMappingSpring WebSocketパッケージについては特に簡単であり、@MessageMappingに類似した注釈が提供されている.@RequestMappingに類似した機能を有し、Controllerに存在する.メッセージの基本要求を定義する.機能も@RequestMappingに類似しており、ワイルドカード``のurl定義をサポートするなど、詳細な使い方はAnnotation Message Handling
  • を参照.
  • SimpMessagingTemplate SimpMessagingTemplateはSpring-WebSocketに組み込まれたメッセージ送信ツールで、指定したクライアントにメッセージを送信できます.

  • 次に、GreetingControllerが新設され、
    @Controller
    public class GreetingController {    
        @Resource
        private SimpMessagingTemplate simpMessagingTemplate;    
        @RequestMapping("/helloSocket")    
        public String index(){        
            return "/hello/index";    
        }    
        @MessageMapping("/change-notice")    
        public void greeting(String value){
            this.simpMessagingTemplate.convertAndSend("/topic/notice", value);    
        }
    }
    

    関連説明:
  • index()は、WebSocketクライアント送信公告機能を実現するためのページを指定し、@RequestMappingを使用しているので、httpリクエストを受信し、ページジャンプを行う.
  • greeting(String value)この方法は、クライアントが仕事公告を送信するWebSocket要求を受信し、@MessageMappingを使用する.
  • this.simpMessagingTemplate.convertAndSend("/topic/notice", value)この方法は公式にConvert the given Object to serialized form, possibly using a MessageConverter, wrap it as a message and send it to the given destination.の意味で「与えられたオブジェクトをシーケンス化し、『MessageConverter』を使用してパッケージを1つのメッセージに変換し、指定されたターゲットに送信する」という意味で、一般的にはこの方法を使用してメッセージの転送送信を行います!

  • 前述のグローバル構成では、サービス側が受信した接続はappヘッダであることが指定されているので、クライアントが公告を送信する要求接続は/app/change-noticeであるべきである.サービス側コードはこのように簡単で、SpringMVCを書くのと同じように、上記のgeeting(String value)の方法では、別の注釈@SendToを使用して別の書き方に変えることもできます.
    @MessageMapping("/change-notice")
    @SendTo("/topic/notice")
    public String greeting(String value) {    
        return value;
    }
    

    関連説明:改善されたコードはもっと簡単で、@SendToを重点的に理解してください.
  • @SendToは、メッセージの宛先を定義する.「/app/change-noticeからのvalueを受信し、/topic/noticeクライアントにvalueを転送する.
  • /topic/noticeは、クライアントが接続を開始した後、サービス側メッセージを購読する際に指定されたアドレスであり、サービス側の戻りを受信するために使用され、後でクライアントコードを書くときに表示されます.

  • これまで、サービス側コードCodingが完了しました!次の記事では、クライアント機能について書きます.
    転送ゲート:Spring WebSocketプローブ2(Spring WebSocket入門チュートリアル)