Submit Search
Upload
Sinatra hijacker
•
Download as PPTX, PDF
•
1 like
•
2,314 views
Minori Tokuda
Follow
Report
Share
Report
Share
1 of 11
Download now
Recommended
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
Hirotaka Kawata
Angular jsとsinatraでturbolinks
Angular jsとsinatraでturbolinks
Minori Tokuda
Gong anyware
Gong anyware
Aki Ariga
gsub with ActiveSupport::SafeBuffer
gsub with ActiveSupport::SafeBuffer
Aki Ariga
はじめて翻訳記事を書いたら300ブクマ超えた話
はじめて翻訳記事を書いたら300ブクマ超えた話
Aki Ariga
Reactつかってみた
Reactつかってみた
Minori Tokuda
あなたの業務に機械学習を活用する5つのポイント
あなたの業務に機械学習を活用する5つのポイント
Shohei Hido
Juliaを使った機械学習
Juliaを使った機械学習
Aki Ariga
Recommended
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
KotlinConf 2018 から見る 最近の Kotlin サーバーサイド事情
Hirotaka Kawata
Angular jsとsinatraでturbolinks
Angular jsとsinatraでturbolinks
Minori Tokuda
Gong anyware
Gong anyware
Aki Ariga
gsub with ActiveSupport::SafeBuffer
gsub with ActiveSupport::SafeBuffer
Aki Ariga
はじめて翻訳記事を書いたら300ブクマ超えた話
はじめて翻訳記事を書いたら300ブクマ超えた話
Aki Ariga
Reactつかってみた
Reactつかってみた
Minori Tokuda
あなたの業務に機械学習を活用する5つのポイント
あなたの業務に機械学習を活用する5つのポイント
Shohei Hido
Juliaを使った機械学習
Juliaを使った機械学習
Aki Ariga
そうだRack作ろう。
そうだRack作ろう。
Kazuma Suzuki
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらインターネット株式会社
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
Amazon Web Services Japan
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
TanUkkii
Railsの運用について
Railsの運用について
Yuuki Namikawa
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
SmartNews, Inc.
API Gateway / AWS CLI
API Gateway / AWS CLI
Operation Lab, LLC.
AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway
AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway
Amazon Web Services Japan
WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
Takakiyo Tanaka
ナウいAndroidセキュリティ
ナウいAndroidセキュリティ
Hiromu Yakura
Ext.directことはじめ
Ext.directことはじめ
Shuhei Aoyama
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
Sotaro Kimura
A2 SORACOM API使いこなしレシピ集 | SORACOM Technology Camp 2020
A2 SORACOM API使いこなしレシピ集 | SORACOM Technology Camp 2020
SORACOM,INC
Kyoto Tycoon Guide in Japanese
Kyoto Tycoon Guide in Japanese
Mikio Hirabayashi
Reactor Netty & Apache Kafka Stack #jsug
Reactor Netty & Apache Kafka Stack #jsug
Yahoo!デベロッパーネットワーク
Rancher kubernetes storages
Rancher kubernetes storages
Tetsurou Yano
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
fukuoka.ex
OSvの概要と実装
OSvの概要と実装
Takuya ASADA
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
Naoto Gohko
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Tasuku Otani
More Related Content
Similar to Sinatra hijacker
そうだRack作ろう。
そうだRack作ろう。
Kazuma Suzuki
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらインターネット株式会社
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
Amazon Web Services Japan
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
TanUkkii
Railsの運用について
Railsの運用について
Yuuki Namikawa
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
SmartNews, Inc.
API Gateway / AWS CLI
API Gateway / AWS CLI
Operation Lab, LLC.
AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway
AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway
Amazon Web Services Japan
WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
Takakiyo Tanaka
ナウいAndroidセキュリティ
ナウいAndroidセキュリティ
Hiromu Yakura
Ext.directことはじめ
Ext.directことはじめ
Shuhei Aoyama
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
Sotaro Kimura
A2 SORACOM API使いこなしレシピ集 | SORACOM Technology Camp 2020
A2 SORACOM API使いこなしレシピ集 | SORACOM Technology Camp 2020
SORACOM,INC
Kyoto Tycoon Guide in Japanese
Kyoto Tycoon Guide in Japanese
Mikio Hirabayashi
Reactor Netty & Apache Kafka Stack #jsug
Reactor Netty & Apache Kafka Stack #jsug
Yahoo!デベロッパーネットワーク
Rancher kubernetes storages
Rancher kubernetes storages
Tetsurou Yano
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
fukuoka.ex
OSvの概要と実装
OSvの概要と実装
Takuya ASADA
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
Naoto Gohko
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Tasuku Otani
Similar to Sinatra hijacker
(20)
そうだRack作ろう。
そうだRack作ろう。
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
Railsの運用について
Railsの運用について
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
API Gateway / AWS CLI
API Gateway / AWS CLI
AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway
AWS Black Belt Tech シリーズ 2015 - Amazon API Gateway
WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
ナウいAndroidセキュリティ
ナウいAndroidセキュリティ
Ext.directことはじめ
Ext.directことはじめ
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
A2 SORACOM API使いこなしレシピ集 | SORACOM Technology Camp 2020
A2 SORACOM API使いこなしレシピ集 | SORACOM Technology Camp 2020
Kyoto Tycoon Guide in Japanese
Kyoto Tycoon Guide in Japanese
Reactor Netty & Apache Kafka Stack #jsug
Reactor Netty & Apache Kafka Stack #jsug
Rancher kubernetes storages
Rancher kubernetes storages
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
OSvの概要と実装
OSvの概要と実装
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Sinatra hijacker
1.
Sinatra Hijackerと (Rack Hijacking
API)の紹介 MinoriTokuda
2.
Sinatra Hijacker •Rack Hijacking
API を利用して SinatraからWebSocketを扱うプ ラグイン
3.
Rackとは • RubyのWebアプリケーションとWebサーバをつ なぐAPIおよびライブラリ群 • 以下の3つの仕様を持つ 1.
Rackアプリケーションはcallメソッドをもつ 2. Rackサーバーはリクエストをパースした変数を 引数としてcallメソッドを呼び出す 3. callメソッドはレスポンスを配列形式で返す
4.
シンプルに表すと・・・ status, header, body
= @app.callenv
5.
Rack Hijacking API •
Rack アプリの呼び出し前後でソケットを横取り するAPI • API呼び出し元にソケット通信の処理をすべて 委譲する完全ハイジャックと、ボディ部分への 処理を指定する部分ハイジャックがある • Rack 1.5.0 で追加
6.
コードで表すと・・・ • 完全ハイジャック def call
env env[„rack.hijack‟].call socket = env[„rack.hijack_io] #IOオブジェクトが取り出される ・・・
7.
コードで表すと・・・ • 部分ハイジャック def call
env ・・・ header[„rack.hijack‟] = ->io { sleep 10 io.write „hogehoge‟ } [status, header, body] end
8.
Sinatra Hijacker • Sinatraのプラグインとして実装 •
TubesockというライブラリでWebSocketをハン ドリングしている • get/post などと同様にwebsocketというメソッド にブロックを渡すことで、websocketプロトコル でアクセスされた場合の処理を記述
9.
使用例 • プラグインなのでregisterしてください class App
<Sinatra::Base register Sinatra::Hijacker websocket „/ws‟ do ws.onmessage{|msg|ws.send_data “hello #{msg}!”} end end
10.
今後 • Sinatraのルーティングを利用するため中でリク エストメソッドを書きかえている(イケテナ イ) • Tubesockの動作と現行のHijackAPI対応サーバ (Pumaなど)とはあんまり相性がよくない •
Rackミドルウェアとして実装したい • socket.ioみたいに long polling とwebsocketを自 動で切り替えるようにしたい etc…
11.
ありがとうございました https://github.com/minoritea/sinatra-hijacker
Download now