Ruby on rails 在网页上显示更新哈希
我有一个IRC机器人,它根据某个命令更新哈希键值。这些值是“自由”或“获取”。调用Ruby on rails 在网页上显示更新哈希,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个IRC机器人,它根据某个命令更新哈希键值。这些值是“自由”或“获取”。调用labstatus时,它将显示4个键值对的输出{:MainSP4=>“Free”、:MainSP5=>“Free”、:MiniSP4=>“Free”、:MiniSP5=>“Free”}。我想在网页上连续显示实验室状态的输出,并希望在命令传递到IRC bot时更新。我尝试过创建一个全局变量并调用它,但没有成功,尽管这可能只是用户的错误 IRC bot 查看 我决定走websockets路线。我已经安装了使用ra
labstatus
时,它将显示4个键值对的输出{:MainSP4=>“Free”、:MainSP5=>“Free”、:MiniSP4=>“Free”、:MiniSP5=>“Free”}
。我想在网页上连续显示实验室状态的输出
,并希望在命令传递到IRC bot时更新。我尝试过创建一个全局变量并调用它,但没有成功,尽管这可能只是用户的错误
IRC bot
查看
我决定走websockets路线。我已经安装了使用rails应用程序实现WebSocket的所有要求。现在我被卡住了,因为我不知道如何设置我的websocketcontroller.rb、events.rb。我已经阅读了github wiki页面上的设置,但仍然不清楚。非常感谢您提供的任何示例或帮助。为了在没有任何用户交互的情况下更新网页内容,您有三种可能:
希望您能找到最适合您的解决方案。HTTP不是这样工作的。一旦从服务器请求一个网页,它就会呈现该网页,将其发送到客户端并关闭连接。在发出另一个请求之前,客户端和服务器之间没有进一步的通信。为了在客户端页面上进行实时更新,有几个选项可用,所有这些选项都使用JavaScript在客户端和服务器之间进行异步通信: 最容易实现的选项是AJAX轮询。客户端反复连接回服务器,通过JavaScript检查当前值。通常,一个单独的HTTP端点以JSON格式提供数据,使其可供客户端使用。当值发生更改时,JavaScript会相应地更新DOM,用户会看到新值。这种方法的缺点是,客户机将发送大量不必要的请求,即使值实际上没有改变。在最坏的情况下,您还有一个与更新间隔一样长的延迟 使用web套接字,客户端和服务器之间的独立连接保持打开状态,数据可以在两者之间来回发送。使用这种方法,您可能会受益于更少的开销、更快的更新(无需等待下一个更新间隔),并且除非值实际发生更改,否则不会有任何通信。然而,这需要更多的努力来实现。类似的解决方案可以使用长轮询或持久HTTP连接来实现
require 'cinch'
require 'chronic'
require 'sqlite3'
require 'sequel'
require 'cinch/commands'
Lab =
{MainSP4: "Free",
MainSP5: "Free",
MiniSP4: "Free",
MiniSP5: "Free"}
LabC =
{MainSP4: " ",
MainSP5: " ",
MiniSP4: " ",
MiniSP5: " "}
############### DB Connection #####################
class Database
include Cinch::Plugin
match /select .* from gears where .* like .*/i
def execute(m)
db = SQLite3::Database.open("development.sqlite3")
m.reply db.execute("#{m.message}")
end
end
############## Lab status and Commands ####################
class Racks
include Cinch::Plugin
match /lab status/i
def execute(l)
l.reply "#{Lab}"
end
end
<% $Lab.each do |key, value| %>
<li><%= "#{key}: #{value}" %>
<% end %>