2016-08-01 6 views
2

私は一般的なレールとウェブ開発の初心者です。私は、rawプロトコルのTCP接続を介してクライアントからデータを受信するレールアプリケーションにルビーTCPSocketサーバを実装することを検討しています。httpプロトコルはありません。このアプリは、レールで処理される他の機能を備えています。これは可能ですか?これは私が自分のコンピュータ上で実行できる単純なサーバーがされる。例えば :railsアプリケーションでtcpソケットを実装する方法は?

require 'socket'    

server = TCPServer.new 3490 
puts "waiting for connection" 
client = server.accept 
puts "client found"       
while str=client.recv(100);  
    val=str.unpack("H*") 
    temp=val.join('').gsub('0','').to_i 

#application specific code below 
    if temp<100 
     temp=temp*10 
    end 
    print "Temperature: " 
    puts temp*0.125 
end 

どのように私はレールのアプリでこれを実装することができますか? 何か提案がありがとうございます。

+0

質問についてはdocsを、http://stackoverflow.com/help/asking、http://stackoverflow.com/help/askingをお読みください。回答を編集して、試したことや間違ったところを明確に把握してください。ようこそSO – alexi2

+0

いくつかのコードを追加しました。これは私の質問を少しクリアすることを願っています。とにかくありがとう – Ujan

答えて

1

Railsは

Rails.applicationがレール アプリケーションの一次ラックアプリケーションオブジェクトである、Rails documentation通り、基本的にRackアプリケーションです。どのRack準拠のWebサーバーでも、 Rails.applicationのRailsアプリケーションを提供するオブジェクトを使用する必要があります。ラック以来

ラップHTTPリクエストとレスポンス、1はRailsのサーバーとの純粋なTCP IPソケットベースの対話を構築することができないかもしれません。

しかし、websocketsとRailsアプリケーションを統合したRails 5の新機能であるAction Cableを見てみたいです。 Wikipediaとして、

WebSocketプロトコルは独立したTCPベースのプロトコルです。 のHTTPとの関係は、そのハンドシェイクがHTTP サーバーによってアップグレード要求として解釈されることだけです。

Railsが主にWebアプリケーションフレームワークであることを前提とすると、ブラウザ以外のクライアントで動作するアクションケーブルを抽出することは難しい場合があります。

0

あなたは/ libの下にモジュールを作成する必要があり、

TCPServerのは、それを実装するための有効な選択肢であることができ、この機能を使用する必要があり、特定のレールコントローラでそれを必要とするかもしれない、あなたはそれを必要とする必要があります。

関連する問題