如何通过Unix套接字与Sinatra Web应用程序进行通信?

时间:2011-05-11 19:29:19

标签: ruby ajax sinatra

我正在嵌入式设备上使用Sinatra编写Web应用程序,并且需要能够通过Unix套接字将数据发送到同一设备上运行的嵌入式代码。我们很可能会使用JSON作为数据格式,但我没有找到一个真正说明如何设置它并与Web应用程序通信的示例。

我正在寻找将在套接字上侦听的代码示例,以及一个显示如何将该数据导入Sinatra网页的示例。我已经看到了两者的点点滴滴,但没有把概念联系在一起。

3 个答案:

答案 0 :(得分:2)

我还没有亲自完成,但我知道Event Machine 支持使用unix socket。事件机器的优点是你可以让代码监听套接字而不会干扰sinatra web服务器。因此,您可以例如监听套接字以获取某些统计信息,将这些统计信息存储在内存中,然后在HTTP请求中将它们返回给客户端。

如果您要使用EventMachine,我建议您使用thin作为您的网络服务器,并在其上实施,因此您无需手动启动它。

答案 1 :(得分:1)

我从未亲自完成此操作,但Unicorn可以侦听unix套接字,并且可以serve Sinatra apps

答案 2 :(得分:0)

文件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

宝石文件:

source 'https://rubygems.org'
gem 'thin'
gem 'sinatra'