से कनेक्ट करने के लिए जावा-वेबस्केट लाइब्रेरी का उपयोग करते समय ड्राफ्ट ने हैंडशेक से इंकार कर दिया है। मैं से संदेश प्राप्त करने वाले वेबस्केट क्लाइंट को बनाने के लिए Java-Websocket library by TooTallNate का उपयोग करने का प्रयास कर रहा हूं। मैं पाइथन में समानांतर बाधाओं के कारण पाइथन में जावा में किए गए एक प्रोग्राम को पोर्ट कर रहा हूं और मेरे ज्ञान के लिए मैं जावा में चीजों को वही कर रहा हूं जैसा मैंने पाइथन में किया था।क्राफ्टबेस एक्सचेंज वेबसाईट स्ट्रीम
ws = websocket.create_connection("wss://ws-feed.exchange.coinbase.com", 20)
ws.send(json.dumps({
"type": "subscribe",
"product_id": "BTC-USD"
}))
यहाँ अपने पूरे जावा वर्ग है:
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 'यहां अजगर में कनेक्शन this websocket lib का उपयोग कर खोलने के लिए मेरे कोड (यह रूप में की उम्मीद काम करता है) है मेरे जावा कोड के साथ एक पूरी तरह से मौलिक मुद्दा नहीं है क्योंकि यह ws: //echo.websocket.org को wss: //ws-feed.exchange.coinbase.com के बजाय यूआरआई के रूप में उपयोग करते समय अपेक्षित काम करता है। लेकिन जब मैं WSS कनेक्ट करने का प्रयास:
Websocket closed: draft [email protected] refuses handshake
कोई प्रमाणीकरण या इस कनेक्शन के लिए ऐसा कुछ जहाँ तक मुझे पता है (मैं नहीं था: //ws-feed.exchange.coinbase.com मैं इस त्रुटि मिलती है मेरे पायथन प्रोग्राम में कोई भी प्रदान नहीं करता है) इसलिए मुझे इस त्रुटि का स्रोत क्या है इस नुकसान के कारण।
आप सभी SSL प्रमाणपत्र को स्वीकार करने के SocketFactory स्थापित करने की कोशिश की है? इस तरह मैंने (हैकली) मेरे wss मुद्दे को हल किया –