001/* 002 * #%L 003 * HAPI FHIR Subscription Server 004 * %% 005 * Copyright (C) 2014 - 2024 Smile CDR, Inc. 006 * %% 007 * Licensed under the Apache License, Version 2.0 (the "License"); 008 * you may not use this file except in compliance with the License. 009 * You may obtain a copy of the License at 010 * 011 * http://www.apache.org/licenses/LICENSE-2.0 012 * 013 * Unless required by applicable law or agreed to in writing, software 014 * distributed under the License is distributed on an "AS IS" BASIS, 015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 016 * See the License for the specific language governing permissions and 017 * limitations under the License. 018 * #L% 019 */ 020package ca.uhn.fhir.jpa.subscription.match.config; 021 022import ca.uhn.fhir.jpa.model.config.SubscriptionSettings; 023import ca.uhn.fhir.jpa.subscription.match.deliver.websocket.SubscriptionWebsocketHandler; 024import ca.uhn.fhir.jpa.subscription.match.deliver.websocket.WebsocketConnectionValidator; 025import org.springframework.beans.factory.annotation.Autowired; 026import org.springframework.context.annotation.Bean; 027import org.springframework.context.annotation.Configuration; 028import org.springframework.stereotype.Controller; 029import org.springframework.web.socket.WebSocketHandler; 030import org.springframework.web.socket.config.annotation.EnableWebSocket; 031import org.springframework.web.socket.config.annotation.WebSocketConfigurer; 032import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; 033import org.springframework.web.socket.handler.PerConnectionWebSocketHandler; 034 035@Configuration 036@EnableWebSocket() 037@Controller 038public class WebsocketDispatcherConfig implements WebSocketConfigurer { 039 040 @Autowired 041 SubscriptionSettings mySubscriptionSettings; 042 043 @Bean 044 public WebsocketConnectionValidator websocketConnectionValidator() { 045 return new WebsocketConnectionValidator(); 046 } 047 048 @Override 049 public void registerWebSocketHandlers(WebSocketHandlerRegistry theRegistry) { 050 theRegistry 051 .addHandler(subscriptionWebSocketHandler(), mySubscriptionSettings.getWebsocketContextPath()) 052 .setAllowedOrigins("*"); 053 } 054 055 @Bean 056 public WebSocketHandler subscriptionWebSocketHandler() { 057 PerConnectionWebSocketHandler retVal = new PerConnectionWebSocketHandler(SubscriptionWebsocketHandler.class); 058 return retVal; 059 } 060}