ruby - 通过 websocket 连接到 CoinEx 时如何修复 Errno::ENETUNREACH?
问题描述
我正在尝试使用 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 = 'wss://stream.binance.com:9443/ws/ltcbtc@miniTicker'
工作得很好,当我使用https://github.com/altangent/ccxws库(nodejs)时,它使用与我的代码中完全相同的 URL 连接到 CoinEx,没有任何麻烦,这意味着我没有连接问题到 CoinEx WS 端点。那么我的代码有什么问题?先感谢您!
解决方案
哦,它现在正在工作,我这边没有任何变化。似乎服务器端出现了一些问题。
推荐阅读
- sql - 是否可以使用记录集作为 MS Access (VBA) 中的源来运行生成表查询?
- java - MaterialButton 与 Button 的大小差异
- java - 在两台不同的机器上创建 RMI 应用程序时客户端和服务器我们应该在哪里定义我们的接口客户端或服务器端?
- featuretools - 您如何搜索特定功能?
- vagrant - vagrant ssh-config 非常慢
- r - R 字符到日期时间导致 NA
- angular - Angular 7注入服务未设置
- ios - IQKeyboardManagerSwift“共享”不可用:在适当的情况下使用基于视图控制器的解决方案
- r - 在 R 的逻辑回归中使用权重的正确方法是什么?
- shell - 将转录本 ID 和基因符号从 rna fasta 打印到新的文本文件