无法构建 Bitfinex Java 客户端 - 未收到任何响应

Cannot build Bitfinex Java Client - Not getting any response

所以,这里的主要目标是通过构建 WebSocket 客户端连接到 Bitfinex WebSocket。我想开始接收信息流(价格、交易等)。问题是在这个阶段我什至无法订阅特定的货币对。换句话说,我正在向 WebSocket 服务器发送信息请求,但我没有收到任何响应,我无法理解这是为什么。我的代码如下。

这是主要方法

    public class Main {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        String URL = "wss://api-pub.bitfinex.com/ws/2/";

        WebSocketClient client = new StandardWebSocketClient();
        WebSocketStompClient stompClient = new WebSocketStompClient(client);
        stompClient.setMessageConverter(new MappingJackson2MessageConverter());
        StompSessionHandler sessionHandler = new MyStompSessionHandler();
        stompClient.connect(URL,sessionHandler);


        new Scanner(System.in).nextLine(); // Don't close immediately.

    }
}

这是 MyStompSessionHandler

    public class MyStompSessionHandler extends StompSessionHandlerAdapter{
    @Override
    public void afterConnected(
            StompSession session, StompHeaders connectedHeaders) {
        System.out.println("New session established : " + session.getSessionId());
        System.out.println("wss://api-pub.bitfinex.com/ws/2");
        session.send("wss://api-pub.bitfinex.com/ws/2/", getSampleMessage());
        System.out.println("Message sent to websocket server");
    }

    @Override
    public void handleException(StompSession session, StompCommand command, StompHeaders headers, byte[] payload, Throwable exception) {
        System.out.println("Got an exception:" + exception);
    }

    @Override
    public Type getPayloadType(StompHeaders headers) {
        return OutboundMessage.class;
    }

    private Object getSampleMessage() {
        InboundMessage inboundMessage = new InboundMessage();
        inboundMessage.setEvent("subscribe");
        inboundMessage.setChannel("ticker");
        inboundMessage.setSymbol("tBTCUSD");
        return inboundMessage;
    }

    @Override
    public void handleFrame(StompHeaders headers, Object payload) {
        InboundMessage msg = (InboundMessage) payload;
        System.out.println(msg.toString());
    }
}

这是 InboundMessage class

public class InboundMessage {
    private String event;
    private String channel;
    private String symbol;

    public InboundMessage() {
    }

    public InboundMessage(String event, String channel, String symbol) {
        this.event = event;
        this.channel = channel;
        this.symbol = symbol;
    }

    public String getEvent() {
        return event;
    }

    public void setEvent(String event) {
        this.event = event;
    }

    public String getChannel() {
        return channel;
    }

    public void setChannel(String channel) {
        this.channel = channel;
    }

    public String getSymbol() {
        return symbol;
    }

    public void setSymbol(String symbol) {
        this.symbol = symbol;
    }

    @Override
    public String toString() {
        return "InboundMessage{" +
                "event='" + event + '\'' +
                ", channel='" + channel + '\'' +
                ", symbol='" + symbol + '\'' +
                '}';
    }

我查看了 Bitfinex website,但没有看到任何支持 STOMP 的证据。他们只有一个 REST 和一个 WebSocket API。因此,从您的客户端使用 STOMP 是行不通的。