javawebsocketjetty-9java-websocket

Connect to ssl web socket as a client on wss://ws.luno.com/api/1/stream/:pair


I am trying to connect to wss://ws.luno.com/api/1/stream/:pair

Instructions are at https://www.luno.com/en/api towards the bottom of the page

I have successfully run the accepted answer from Connecting to a secured websocket

However when I replace the url

String url = "wss://ws.luno.com/api/1/stream/:pair";//"wss://qa.sockets.stackexchange.com/";

and run again I get the following exeption

2018-10-06 12:07:08.690:WARN:twl.SecureClientSocket:WebSocketClient@1717159510-17: org.eclipse.jetty.websocket.api.UpgradeException: 404 Not Found at org.eclipse.jetty.websocket.client.WebSocketUpgradeRequest.onComplete(WebSocketUpgradeRequest.java:522) at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:202) at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:194) at org.eclipse.jetty.client.HttpReceiver.terminateResponse(HttpReceiver.java:470) at org.eclipse.jetty.client.HttpReceiver.responseSuccess(HttpReceiver.java:416) at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.messageComplete(HttpReceiverOverHTTP.java:316) at org.eclipse.jetty.http.HttpParser.handleContentMessage(HttpParser.java:599) at org.eclipse.jetty.http.HttpParser.parseContent(HttpParser.java:1669) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1517) at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.parse(HttpReceiverOverHTTP.java:172) at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:135) at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:73) at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:133) at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:155) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:422) at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:306) at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:160) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680) at java.lang.Thread.run(Thread.java:748) 2018-10-06 12:07:08.696:WARN:twl.SecureClientSocket:main: java.util.concurrent.ExecutionException: org.eclipse.jetty.websocket.api.UpgradeException: 404 Not Found at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357) at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895) at trading.websocket.luno.SecureClientSocket.main(SecureClientSocket.java:32) Caused by: org.eclipse.jetty.websocket.api.UpgradeException: 404 Not Found at org.eclipse.jetty.websocket.client.WebSocketUpgradeRequest.onComplete(WebSocketUpgradeRequest.java:522) at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:202) at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:194) at org.eclipse.jetty.client.HttpReceiver.terminateResponse(HttpReceiver.java:470) at org.eclipse.jetty.client.HttpReceiver.responseSuccess(HttpReceiver.java:416) at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.messageComplete(HttpReceiverOverHTTP.java:316) at org.eclipse.jetty.http.HttpParser.handleContentMessage(HttpParser.java:599) at org.eclipse.jetty.http.HttpParser.parseContent(HttpParser.java:1669) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1517) at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.parse(HttpReceiverOverHTTP.java:172) at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:135) at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:73) at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:133) at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:155) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:422) at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:306) at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:160) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680) at java.lang.Thread.run(Thread.java:748)

Any suggestions would be welcome


Solution

  • To answer my own question, the websocket URL I was using is wrong, (wss://ws.luno.com/api/1/stream/:pair). I needed to replace :pair with the currency pair, e.g. XBTZAR.