lib/template/wsserver.rb in browser_app_base-0.0.3 vs lib/template/wsserver.rb in browser_app_base-0.0.4
- old
+ new
@@ -1,9 +1,19 @@
require "./server_app_base"
+require "json"
+def config_json_hash(json)
+ config = {}
+ json.each do |j|
+ config[j["name"]] = j["value"]
+ end
+ return config
+end
+
class WsServer < Sinatra::Base
$ws_list = []
+ json_config = nil
get "" do
if !request.websocket?
"no supported"
else
request.websocket do |ws|
@@ -12,10 +22,13 @@
$ws_list << ws
end
ws.onmessage do |msg|
puts msg
if msg =~ /^exec:/
+ json = JSON.parse(File.read("config/setting.json"))
+ json_config = config_json_hash(json)
+ $app.set_config(json_config)
argv = msg.gsub(/^exec:/, "")
Thread.new {
$app.start(argv.split(",")) do |out|
ws.send(out)
end
@@ -27,9 +40,18 @@
if msg =~ /^suspend/
$app.suspend
end
if msg =~ /^resume/
$app.resume
+ end
+ if msg =~ /^setting:/
+ json_string = msg.gsub(/^setting:/, "")
+ json = JSON.parse(json_string)
+ File.open("config/setting.json", "w") do |w|
+ w.puts JSON.pretty_generate(json)
+ end
+ json_config = config_json_hash(json)
+ $app.set_config(json_config)
end
if msg == "exit"
unless ENV["OCRA"] == "true"
halt