Spring server run in myip + 8080 port and nettysocketio server run in commandLineRunner in 8085 port[SocketConfig.java]
@Configuration@RequiredArgsConstructorpublic class SocketConfig { final private SocketIOConnectListener socketIOConnectListener; final private SocketIODisconnectListener socketIODisconnectListener; final private SocketIoAddMappingSupporter socketIoAddMappingSupporter; final private AuthZListener authZListener; @Value("${socket-server.host}") private String host; @Value("${socket-server.port}") private Integer port; @SneakyThrows @Bean public SocketIOServer socketIOServer() { com.corundumstudio.socketio.Configuration config = new com.corundumstudio.socketio.Configuration(); config.setHostname(host); config.setPort(port); config.setAuthorizationListener(authZListener); config.setMaxHttpContentLength(10 * 1024 * 1024); config.setMaxFramePayloadLength(10 * 1024 * 1024); config.setOrigin("*"); config.setNeedClientAuth(false); SocketIOServer socketIOServer = new SocketIOServer(config); socketIOConnectListener.setServer(socketIOServer); socketIODisconnectListener.setServer(socketIOServer); socketIoAddMappingSupporter.addListener(socketIOServer); socketIOServer.addConnectListener(socketIOConnectListener::OnConnect); socketIOServer.addDisconnectListener(socketIODisconnectListener::onDisconnect); return socketIOServer; }}
SocketIOServerCommandLineRunner.java
@Slf4j@Component@Order(1)@RequiredArgsConstructorpublic class SocketIOServerCommandLineRunner implements CommandLineRunner { final private SocketIOServer socketIOServer; public Integer port = 8085; @Override public void run(String... args) throws Exception { InputStream inputStream = null; try { KeyStore ks = KeyStore.getInstance("JKS"); ks.load(new FileInputStream("C:\\Users\\박상한\\keystore.jks"), "password".toCharArray()); try { PrivateKey privateKey = (PrivateKey) ks.getKey("1","password".toCharArray()); // 키별칭과비밀번호 if (privateKey!=null){ System.out.println("key valid"); } // 비밀번호가일치하면 privateKey에값이할당됩니다. } catch (UnrecoverableKeyException e) { // 비밀번호가일치하지않으면예외가발생합니다. } socketIOServer.getConfiguration().setAllowHeaders("*"); inputStream = new FileInputStream("C:\\Users\\박상한\\keystore.jks"); socketIOServer.getConfiguration().setKeyStore(inputStream); socketIOServer.getConfiguration().setKeyStorePassword("password"); socketIOServer.start(); } catch (IOException e) { throw new RuntimeException("키저장소로드오류", e); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } }}
client[socket.js]
socket = io('myip:8085', { rejectUnauthorized:false, autoConnect: true, reconnection: true});
index.js:83
GET https://myip:8085/socket.io/?EIO=3&transport=polling&t=P0788Hq net::ERR_SSL_PROTOCOL_ERROR
i applied ssl spirng server and netty socketio server both.spring server serves static files and dynamic files. the files served correctly. but when client socket connect error::ERR_SSL_PROTOCOL_ERROR index.js:83
GET https://myip:8085/socket.io/?EIO=3&transport=polling&t=P07G5ka net::ERR_SSL_PROTOCOL_ERROR how can i fix it?
i try remove socketio server https. but Mixed Content The page at ' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint ''. This request has been blocked; the content must be served over error i added html code but the error exist.how can i apply ssl to socketio server? is netty socketio's corundumstudio.socketioserver is not accept p12, jks certificate files? or there is othere way to apply ssl?
my nettysocketio version = implementation 'com.corundumstudio.socketio:netty-socketio:2.0.9'client: socketio-client = 2.5.0