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

问题描述 投票:4回答:3

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

我正在寻找一个将在套接字上侦听的代码示例,以及一个显示如何将这些数据获取到Sinatra网页中的示例。我已经看到了点点滴滴,但没有发现将概念联系在一起。

ruby ajax sinatra
3个回答
2
投票

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

如果您打算使用EventMachine,我建议使用thin作为在其之上实现的Web服务器,因此您无需手动启动它。


1
投票

我从来没有亲自做过,但是Unicorn可以在Unix套接字上监听,并且可以serve Sinatra apps


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

Gemfile:

source 'https://rubygems.org'
gem 'thin'
gem 'sinatra'
© www.soinside.com 2019 - 2024. All rights reserved.