Skip to content

Commit 54dfd7c

Browse files
committed
Support connect HTTP headers
1 parent 3adaa2f commit 54dfd7c

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

lib/src/main/java/ua/naiksoftware/stomp/Stomp.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import org.java_websocket.WebSocket;
44

5+
import java.util.Map;
6+
57
import ua.naiksoftware.stomp.client.StompClient;
68

79
/**
@@ -15,12 +17,23 @@
1517
*/
1618
public class Stomp {
1719

18-
public static StompClient over(Class claszz, String uri) {
19-
if (claszz == WebSocket.class) {
20-
return createStompClient(new WebSocketsConnectionProvider(uri));
20+
public static StompClient over(Class clazz, String uri) {
21+
return over(clazz, uri, null);
22+
}
23+
24+
/**
25+
*
26+
* @param clazz class for using as transport
27+
* @param uri URI to connect
28+
* @param connectHttpHeaders HTTP headers, will be passed with handshake query, may be null
29+
* @return StompClient for receiving and sending messages. Call #StompClient.connect
30+
*/
31+
public static StompClient over(Class clazz, String uri, Map<String, String> connectHttpHeaders) {
32+
if (clazz == WebSocket.class) {
33+
return createStompClient(new WebSocketsConnectionProvider(uri, connectHttpHeaders));
2134
}
2235

23-
throw new RuntimeException("Not supported overlay transport: " + claszz.getName());
36+
throw new RuntimeException("Not supported overlay transport: " + clazz.getName());
2437
}
2538

2639
private static StompClient createStompClient(ConnectionProvider connectionProvider) {

lib/src/main/java/ua/naiksoftware/stomp/WebSocketsConnectionProvider.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88

99
import java.net.URI;
1010
import java.util.ArrayList;
11+
import java.util.HashMap;
1112
import java.util.List;
13+
import java.util.Map;
1214

1315
import rx.Observable;
1416
import rx.Subscriber;
@@ -21,16 +23,19 @@ public class WebSocketsConnectionProvider implements ConnectionProvider {
2123
private static final String TAG = WebSocketsConnectionProvider.class.getSimpleName();
2224

2325
private final String mUri;
26+
private final Map<String, String> mConnectHttpHeaders;
2427
private WebSocketClient mWebSocketClient;
2528
private List<Subscriber<? super LifecycleEvent>> mLifecycleSubscribers;
2629
private List<Subscriber<? super String>> mMessagesSubscribers;
2730
private boolean haveConnection;
2831

2932
/**
3033
* Support UIR scheme ws://host:port/path
34+
* @param connectHttpHeaders may be null
3135
*/
32-
public WebSocketsConnectionProvider(String uri) {
36+
public WebSocketsConnectionProvider(String uri, Map<String, String> connectHttpHeaders) {
3337
mUri = uri;
38+
mConnectHttpHeaders = connectHttpHeaders != null ? connectHttpHeaders : new HashMap<>();
3439
mLifecycleSubscribers = new ArrayList<>();
3540
mMessagesSubscribers = new ArrayList<>();
3641
}
@@ -56,7 +61,7 @@ private void createWebSocketConnection() {
5661
if (haveConnection)
5762
throw new IllegalStateException("Already have connection to web socket");
5863

59-
mWebSocketClient = new WebSocketClient(URI.create(mUri), new Draft_17()) {
64+
mWebSocketClient = new WebSocketClient(URI.create(mUri), new Draft_17(), mConnectHttpHeaders, 0) {
6065
@Override
6166
public void onOpen(ServerHandshake handshakeData) {
6267
emitLifecycleEvent(new LifecycleEvent(LifecycleEvent.Type.OPENED));

0 commit comments

Comments
 (0)