coinbase exchange websocket streamからメッセージを受け取るwebsocketクライアントを作成するためにJava-Websocket library by TooTallNateを使用しようとしています。 Pythonで並列化のボトルネックが発生しているため、私はPythonで作成したプログラムをJavaに移植しています。私はPythonの場合と同じようにJavaで同じことをしています。ここでthis websocket libを使用してPythonでの接続を開くために私のコードは、(これは期待通りに動作します)です。ここでドラフトはjava-websocketライブラリを使用してcoinbase交換用websocketストリームに接続するときにハンドシェイクを拒否します
ws = websocket.create_connection("wss://ws-feed.exchange.coinbase.com", 20)
ws.send(json.dumps({
"type": "subscribe",
"product_id": "BTC-USD"
}))
は私の全体のJavaクラスです:
public class CoinbaseWebsocketClient extends WebSocketClient {
private final Gson gson = new Gson();
private CoinbaseWebsocketClient(URI serverURI) {
super(serverURI, new Draft_17());
connect();
}
private static URI uri;
private static CoinbaseWebsocketClient coinbaseWebsocketClient;
static {
try {
uri = new URI("wss://ws-feed.exchange.coinbase.com");
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
protected static CoinbaseWebsocketClient get() {
if (coinbaseWebsocketClient == null) {
coinbaseWebsocketClient = new CoinbaseWebsocketClient(uri);
}
return coinbaseWebsocketClient;
}
@Override
public void onOpen(ServerHandshake serverHandshake) {
System.out.println("Websocket open");
final JsonObject btcUSD_Request = new JsonObject();
btcUSD_Request.addProperty("type", "subscribe");
btcUSD_Request.addProperty("product_id", "BTC_USD");
final String requestString = gson.toJson(btcUSD_Request);
send(requestString);
}
@Override
public void onMessage(String s) {
System.out.println("Message received: " + s);
}
@Override
public void onClose(int code, String reason, boolean remote) {
System.out.println("Websocket closed: " + reason);
}
@Override
public void onError(Exception e) {
System.err.println("an error occurred:" + e);
}
}
私は「そこにISN知っています私のJavaコードの根本的な問題は、wss://ws-feed.exchange.coinbase.comではなくws://echo.websocket.orgをURIとして使用すると期待通りに機能するからです。私は、WSSに接続しようとするときしかし:私が知っているようには認証または限り、この接続のようなものはありません
Websocket closed: draft [email protected] refuses handshake
(私はdidnの:私はこのエラーを取得する//ws-feed.exchange.coinbase.com私のPythonプログラムでは何も提供していないので)、このエラーの原因を紛失しています。
は、すべてのSSL証明書を受け入れることのSocketFactoryを設定しようとしたことがありますか?それで私は(馬鹿げた)私のwss問題を修正したのです –