我想发送一个
“与客户保持联系”
我的 websocket 连接每 30 秒发送一条消息。我的 websocket 初始化程序中的代码如下所示:
ws = WebSocket::Client::Simple.connect 'wss://bitcoin.toshi.io/'
ws.on :message do |msg|
rawJson = msg.data
message_response = JSON.parse(rawJson)
end
ws.on :open do
ws.send "{\"subscribe\":\"blocks\"}"
end
ws.on :close do |e|
puts "WEBSOCKET HAS CLOSED #{e}"
exit 1
end
ws.on :error do |e|
puts "WEBSOCKET ERROR #{e}"
end
如果没有任何形式的“保持活动”,连接将在大约 45 秒内关闭。我应该如何发送“心跳”数据包?看来连接是被他们的服务器关闭的,而不是我的。
您可以使用Websocket Eventmachine 客户端 https://github.com/imanel/websocket-eventmachine-clientgem 发送心跳:
require 'websocket-eventmachine-client'
EM.run do
ws = WebSocket::EventMachine::Client.connect(:uri => 'wss://bitcoin.toshi.io/')
puts ws.comm_inactivity_timeout
ws.onopen do
puts "Connected"
end
ws.onmessage do |msg, type|
puts "Received message: #{msg}"
end
ws.onclose do |code, reason|
puts "Disconnected with status code: #{code}"
end
EventMachine.add_periodic_timer(15) do
ws.send "{}"
end
end
您可以使用以下命令为 EventMachine 设置计时器EM::add_periodic_timer(interval_in_seconds)
,然后发送你的心跳。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)