gpt4 book ai didi

ruby - Faye WebSocket,关闭处理程序被触发后重新连接到套接字

转载 作者:数据小太阳 更新时间:2023-10-29 07:12:02 27 4
gpt4 key购买 nike

我有一个 super 简单的脚本,它几乎包含了 Faye WebSocket GitHub 页面上用于处理关闭连接的内容:

 ws = Faye::WebSocket::Client.new(url, nil, :headers => headers)

ws.on :open do |event|
p [:open]
# send ping command
# send test command
#ws.send({command: 'test'}.to_json)
end

ws.on :message do |event|
# here is the entry point for data coming from the server.
p JSON.parse(event.data)
end

ws.on :close do |event|
# connection has been closed callback.
p [:close, event.code, event.reason]
ws = nil
end

一旦客户端空闲 2 小时,服务器就会关闭连接。一旦 ws.on :close 被触发,我似乎找不到重新连接到服务器的方法。有没有简单的方法来解决这个问题?我只是想让它在 :close 关闭后触发 ws.on :open

最佳答案

寻找 Faye Websocket Client 实现,有一个 ping 选项,它定期向服务器发送一些数据,防止连接空闲。

# Send ping data each minute
ws = Faye::WebSocket::Client.new(url, nil, headers: headers, ping: 60)

但是,如果您不想依赖服务器行为,因为即使您定期发送一些数据,它也可以完成连接,您可以将客户端设置放在一个方法中,如果服务器关闭连接。

def start_connection
ws = Faye::WebSocket::Client.new(url, nil, headers: headers, ping: 60)

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

ws.on :message do |event|
# here is the entry point for data coming from the server.
p JSON.parse(event.data)
end

ws.on :close do |event|
# connection has been closed callback.
p [:close, event.code, event.reason]

# restart the connection
start_connection
end
end

关于ruby - Faye WebSocket,关闭处理程序被触发后重新连接到套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22941084/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com