我正在使用Sinatra在嵌入式设备上编写Web应用程序,并且需要能够通过Unix套接字向在同一设备上运行的嵌入式代码发送和接收数据。我们很可能会使用JSON作为数据格式,但是我还没有找到一个真正说明如何设置它并与Web应用程序通信的示例。
我正在寻找一个将在套接字上侦听的代码示例,以及一个显示如何将这些数据获取到Sinatra网页中的示例。我已经看到了点点滴滴,但没有发现将概念联系在一起。
我还没有亲自完成,但是我知道Event Machine 支持使用unix套接字。事件机器的优点是您可以让代码侦听套接字,而不会“干扰” sinatra Web服务器。因此,例如,您可以侦听套接字以获取一些统计信息,将这些统计信息存储在内存中,然后根据HTTP请求将其返回给客户端。
如果您打算使用EventMachine,我建议使用thin作为在其之上实现的Web服务器,因此您无需手动启动它。
我从来没有亲自做过,但是Unicorn可以在Unix套接字上监听,并且可以serve Sinatra apps。
文件app.rb
:
#!/usr/bin/env ruby
require 'sinatra'
SOCKET_PATH = File.expand_path('tmp/app.sock')
class App < Sinatra::Base
set :server, :thin
set :bind, SOCKET_PATH
get '/' do
'Welcome'
end
end
if __FILE__ == $0
App.run!
end
运行:$ ruby app.rb
Gemfile:
source 'https://rubygems.org'
gem 'thin'
gem 'sinatra'