如何使用Julia和WebSockets.jl订阅Binance市场流

mlnl4t2r  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(126)

我尝试了一段时间,现在连接到Binance市场流使用WebSockets.jl包,但我没有得到任何回应。我已经在这里看过并找到了this question,但这会导致与所描述的相同的问题:收件箱通道只是等待,但没有得到响应。
我试过的代码如下:

using WebSockets, JSON
    
    uri = "wss://stream.binance.com:9443"
    json_part = "{'method': 'SUBSCRIBE', 'params': ['btcusdt@depth'], 'id': 1}"
    inbox = Channel{String}(10)
    outbox = Channel{String}(10)

    ws_task = @async WebSockets.open(uri) do ws
           inbox_task = @async while !eof(ws)
               put!(inbox, String(read(ws)))
           end
           outbox_task = @async while isopen(ws)
               write(ws, take!(outbox))
           end
       end

    put!(outbox, json_part)
    take!(inbox)

我以前从未使用过WebSockets,所以可能我只是使用了错误的端点或请求格式。但我找不到更好的文档或有用的示例。
有人能帮我把这个修好吗?

cclgggtu

cclgggtu1#

以下应该是可行的:

using WebSockets, JSON
    
uri = "wss://stream.binance.com:9443"
json_part = "{\"method\": \"SUBSCRIBE\", \"params\": [\"btcusdt@depth\"], \"id\": 1}"
inbox = Channel{String}(10)
outbox = Channel{String}(10)

ws_task = @async WebSockets.open(uri) do ws
    inbox_task = @async while !eof(ws)
        put!(inbox, String(read(ws)))
    end
    outbox_task = @async while isopen(ws)
        write(ws, take!(outbox))
    end
end

@async put!(outbox, json_part)
@async take!(inbox)

虽然我没有访问Binance帐户的权限,所以如果有人可以确认,那就太好了!

相关问题