【问题标题】:How can I communicate to a Sinatra web app over a Unix socket?如何通过 Unix 套接字与 Sinatra Web 应用程序通信?
【发布时间】:2011-08-23 14:18:38
【问题描述】:

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

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

【问题讨论】:

    标签: ruby ajax sinatra


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这看起来可行。所以基本上有一个监听器,它将它获得的任何数据存储到一个适当的变量中,并且 AJAX 请求会访问它?
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-08
        • 2011-09-19
        • 1970-01-01
        相关资源
        最近更新 更多