diff --git a/src/main/java/org/javawebstack/httpclient/HTTPClient.java b/src/main/java/org/javawebstack/httpclient/HTTPClient.java index 217139a..6429d23 100644 --- a/src/main/java/org/javawebstack/httpclient/HTTPClient.java +++ b/src/main/java/org/javawebstack/httpclient/HTTPClient.java @@ -180,9 +180,16 @@ public WebSocket webSocket(String path, WebSocketHandler handler) throws IOExcep } public WebSocket webSocket(String path, WebSocketHandler handler, Map additionalHeaders) throws IOException { - HTTPClientSocket socket = new HTTPClientSocket(getBaseUrl() + ((path.startsWith("/") || path.startsWith("http://") || path.startsWith("https://")) ? "" : "/") + path, !isSSLVerification()); + HTTPClientSocket socket = new HTTPClientSocket(getBaseUrl() + ((path.startsWith("/") || path.startsWith("http://") || path.startsWith("https://") || path.startsWith("ws://") || path.startsWith("wss://")) ? "" : "/") + path, !isSSLVerification()); if(additionalHeaders != null) additionalHeaders.forEach(socket::setRequestHeader); + + List reqCookies = new ArrayList<>(); + for(HttpCookie cookie : defaultCookies) + reqCookies.add(cookie.getName()+"="+cookie.getValue()); + if (reqCookies.size() > 0) + socket.setRequestHeader("Cookie", String.join("; ", reqCookies)); + WebSocket webSocket = new WebSocket(socket, handler); new Thread(webSocket).start(); return webSocket; diff --git a/src/main/java/org/javawebstack/httpclient/HTTPClientSocket.java b/src/main/java/org/javawebstack/httpclient/HTTPClientSocket.java index 786dd57..560d6a1 100644 --- a/src/main/java/org/javawebstack/httpclient/HTTPClientSocket.java +++ b/src/main/java/org/javawebstack/httpclient/HTTPClientSocket.java @@ -133,8 +133,6 @@ private void writeHeaders() throws IOException { .append(" ") .append(requestPath) .append(" HTTP/1.1\nHost: ") - .append(host) - .append("\r\nHost: ") .append(host); sb.append("\r\n"); requestHeaders.forEach((k, values) -> values.forEach(v -> sb.append(k).append(": ").append(v).append("\r\n"))); diff --git a/src/main/java/org/javawebstack/httpclient/websocket/WebSocket.java b/src/main/java/org/javawebstack/httpclient/websocket/WebSocket.java index 9e37c32..a1d95ef 100644 --- a/src/main/java/org/javawebstack/httpclient/websocket/WebSocket.java +++ b/src/main/java/org/javawebstack/httpclient/websocket/WebSocket.java @@ -54,7 +54,11 @@ public void run() { socket.close(); break; case WebSocketFrame.OP_PING: - frame.setOpcode(WebSocketFrame.OP_PONG).setMaskKey().write(socket.getOutputStream()); + if (frame.getPayload().length > 125) { + close(1002, "Protocol Error"); + } else { + frame.setOpcode(WebSocketFrame.OP_PONG).setMaskKey().write(socket.getOutputStream()); + } break; case WebSocketFrame.OP_BINARY: handler.onMessage(this, frame.getPayload());