mruby-simplehttpserverをさわってみた


  • まずは通例, mrubyのclone
$ git clone https://github.com/mruby/mruby.git


  • んで、cloneしたmruby内のbuild_config.rbに下記mrbgemsの行を追加
conf.gem mgem: 'mruby-simplehttpserver'


  • んで、mrubyディレクトリ内で ./minirake しておく
  • コンパイルが終わったら、試しにmatsumotoryさんのexampleコードを動かしてみる
  • mrubyを置いていると同じディレクトリで良いと思われる
$ tree -L 2
.
├── mruby
│   ├── AUTHORS
│   ├── CONTRIBUTING.md
│   ├── LEGAL
│   ├── LICENSE
│   ├── Makefile
│   ├── NEWS
│   ├── README.md
│   ├── Rakefile
│   ├── TODO
│   ├── appveyor.yml
│   ├── appveyor_config.rb
│   ├── benchmark
│   ├── bin
│   ├── build
│   ├── build_config.rb
│   ├── doc
│   ├── examples
│   ├── include
│   ├── lib
│   ├── minirake
│   ├── mrbgems
│   ├── mrblib
│   ├── mruby-source.gemspec
│   ├── oss-fuzz
│   ├── src
│   ├── tasks
│   ├── test
│   └── travis_config.rb
└── server.rb



  • ファイルをmrubyコマンド(simplehttpserverのmrbgemsをコンパイルし終わった状態のbinファイル)実行する
$ ./mruby/bin/mruby server.rb 


  • おそらくうまくいったらエラーなど表示されず実行されていると思われる
  • localhostのport8000でサーバーが立ち上がっていると思われるのでcurlで取得してみる
$ curl http://localhost:8000/mruby
Hello mruby World.


  • exampleの server.rb 通りのコードであれば、Hello mruby Worldが返ってきて成功


  • ふむ・・・
  • 次は、、、public class methodsなるものを触ってみる
new(server_ip = nil, port = nil, nonblock = nil, app = nil, debug = nil)


  • ということは
    • server_ipはprivate IP でやると一応いけるってこと?
    • いけた!
  • nonblockパラメータをtrueにすると、non-blockingになるらしい
    • non-blockingとは
    • あー、サーバーの非同期処理とかそういうこと?
    • ためしてみる
    • ためしたけど違いがわからなかった・・・
    • なるほど
    • ちなみに nil でも false でも大丈夫だった


  • ふむ・・・
  • mrubyでチャットアプリって作れるんだろうか(たぶんRubyではそういうのがある)


http2も余裕があったら

GitHub - matsumotory/mruby-http2: HTTP2 Module for mruby