javascript,ruby間でwebsocket+msgpack使って通信 というのをやってみた。
Ruby とブラウザ (SVG) の組み合わせで、グラフを動的に表示するツールを作っている。そこで構造化データをブラウザ - Ruby 間でやり取りする必要がでてきたが、WebSocket と msgpack を扱った上記ページがとても参考になった。そのこと自体を忘れないようにこうしてメモするとともに、自分のミスにより2つほどひっかかった点も備忘録として書き留めておく。Ruby サイド
普通に gem install em-websocket で EM::WebSocket を入れる。以前はバイナリが送れなかったようだが、今は gem で入れたものでもsend-binary できる。あと Ruby 用の msgpack も gem でインスト。Javascript サイド
参考ページのサンプルをちゃんと見ずにやっていたので、以下の行を入れ忘れていた:そして msgpack / msgpack-javascript だが、https://github.com/roncli/msgpack-javascript にあるものを使った。はじめ本家を利用してみたが、ハッシュキーに数値を使ったものを受けるとデコードに失敗した。これが msgpack の仕様の問題ではなく、msgpack-javascript の実装固有の問題だというところまでは確認ができたが、 Javascript をさくっと直せるほどのスキルもない。ハッシュキーに使っている数値を一旦文字列にして、受け手で再度数値に戻す、とかもやりたくない。悶々と fork を探していたら上記が見つかった。
その後( 2014/11/9 追記)
これまで em-websocket 0.5.0 を使っていたが、 0.5.1 にして急にバイナリの受信ができなくなった。 em-websocket の Changelogを見ると、
- new features:
- Support for receiving binary messages
0 件のコメント:
コメントを投稿