package com.juick.server.configuration; import com.juick.server.component.JuickServerComponent; import com.juick.service.UserService; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.socket.client.WebSocketConnectionManager; import org.springframework.web.socket.client.standard.StandardWebSocketClient; import org.springframework.web.util.UriComponentsBuilder; import javax.inject.Inject; @Configuration @EnableScheduling public class JuickServerComponentConfiguration { @Value("${websocket_url:ws://localhost:8080/}") private String baseUri; @Value("${service_user:juick}") private String serviceUser; @Inject private UserService userService; @Inject private JuickServerComponent juickServerComponent; @Bean public WebSocketConnectionManager connectionManager() { String hash = userService.getHashByUID(userService.getUIDbyName(serviceUser)); String websocketURI = UriComponentsBuilder.fromUriString(baseUri) .queryParam("hash", hash).build().toUriString(); WebSocketConnectionManager manager = new WebSocketConnectionManager(client(), juickServerComponent, websocketURI); manager.setAutoStartup(true); return manager; } @Bean public StandardWebSocketClient client() { return new StandardWebSocketClient(); } }