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

Stream 无法构建Bitfinex Java客户端-未收到任何响应,stream,spring-websocket,stomp,trading,Stream,Spring Websocket,Stomp,Trading,因此,这里的主要目标是通过构建WebSocket客户端连接到Bitfinex WebSocket。我想开始接收信息流(价格、交易等)。问题是,在这个阶段,我甚至无法订阅特定的货币对。换句话说,我正在向WebSocket服务器发送一个信息请求,但没有收到任何响应,我无法理解这是为什么。我的代码如下 这是主要的方法 public class Main { public static void main(String[] args) throws ExecutionException,

因此,这里的主要目标是通过构建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.

    }
}
这是myTompSessionHandler

    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类

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 + '\'' +
                '}';
    }

我看了这篇文章,没有看到任何证据表明STOMP是被支持的。它们只有一个REST和一个WebSocket API。因此,使用客户的跺脚是行不通的。

谢谢你,贾斯汀。你是对的。事实证明,解决办法是根本不用跺脚。仅使用WebSocket API就解决了这个问题。解决方案的代码不到10行。我将提供上述工作代码。