gpt4 book ai didi

ruby - 使用事件机 websocket 广播数据

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

我已经编写了一个程序,用于使用 websocket 从 html 文件读取数据到 ruby​​ 程序。我包括以下代码:

EventMachine::WebSocket.run(:host => "0.0.0.0", :port => 8080) do |ws|
ws.onopen { |handshake|
puts "WebSocket connection open #{ws}"

# Access properties on the EM::WebSocket::Handshake object, e.g.
# path, query_string, origin, headers

# Publish message to the client
# ws.send "Hello Client, you connected to #{handshake.path}"
}


ws.onclose { puts "Connection closed" }

ws.onmessage { |msg|
puts "Recieved message: #{msg}"

ws.send "#{msg}"
}

end

这工作正常。它接收从我的 html 页面发送的任何数据。现在,我需要的是跟踪与此服务器的连接并将收到的消息发送到所有可用连接。这里使用的'发送'函数只能发送到指定的连接。

最佳答案

您需要一个基本的聊天服务器吗?

只需将连接存储在列表(或散列)中。人们倾向于包含在哈希中以便更容易删除它们如果这是在一个类中,请使用 @connections 而不是 $connections

GL

$connections = {}
EventMachine::WebSocket.run(:host => "0.0.0.0", :port => 8080) do |ws|
ws.onopen
$connections[ws] = true
end
ws.onclose do
$connections.delete(ws)
end
ws.onmessage do |msg|
$connections.each { |c, b| c.send msg }
end
end

关于ruby - 使用事件机 websocket 广播数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19508891/

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