通过网络套接字连接到CoinEx时如何修复Errno :: ENETUNREACH?

时间:2019-08-20 20:29:30

标签: ruby websocket eventmachine

我正在尝试使用Ruby 2.6通过WebSocket与CoinEx(加密货币交换)API进行通信。我有以下代码:

require 'faye/websocket'
require 'eventmachine'

url = 'wss://socket.coinex.com/'
# url = 'wss://stream.binance.com:9443/ws/ltcbtc@miniTicker'

EM.run do
  ws = Faye::WebSocket::Client.new(url)

  ws.on :open do |event|
    p [:open]
    ...
  end

  ws.on :message do |event|
    p [:message]
    ...
  end

  ws.on :close do |event|
    p [:close, event.code, event.reason]
    ...
  end
end

运行此代码时,我总是立即看到[:close, 1006, ""],而没有[:open]。我深入研究了gems(faye / websocket和eventmachine),并添加了一些调试输出以更好地了解正在发生的事情。现在我的回溯如下:

/home/chernish2/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/faye-websocket-0.10.9/lib/faye/websocket/client.rb:87:in `unbind'
/home/chernish2/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/eventmachine-1.2.7/lib/eventmachine.rb:1483:in `event_callback'
/home/chernish2/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/eventmachine-1.2.7/lib/eventmachine.rb:195:in `run_machine'
/home/chernish2/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/eventmachine-1.2.7/lib/eventmachine.rb:195:in `run'
/home/chernish2/soft/trader2/test/ws_test.rb:36:in `<main>'
emit_error(), message=Errno::ENETUNREACH
[:close, 1006, ""]

除了另一个URL,这对我来说真的没有任何意义

url = 'wss://stream.binance.com:9443/ws/ltcbtc@miniTicker'

工作正常,当我使用https://github.com/altangent/ccxws库(nodejs)时,它使用与代码中完全相同的URL连接到CoinEx,没有任何麻烦,这意味着我在连接CoinEx WS时没有问题端点。 那么我的代码有什么问题呢?预先谢谢你!

1 个答案:

答案 0 :(得分:0)

哦,它现在正在运行,我这边没有任何变化。服务器端似乎出现了一些问题。