Meteorから派生したSockJSの話

色々教えていただきました。ありがとうございます
9
yomukaku_memo @yomukaku_memo

「meteor」どえらいフレームワークが出てきた感じ。 http://t.co/k30oKPk3

2012-04-11 11:03:25
すぎゃーん💯 @sugyan

[JavaScript][WAF]ほえぇ。JavaScript製WAFか。使う場面は思い浮かばないけどスゴいな / “Meteor” http://t.co/R6tzVbEf

2012-04-11 11:16:13
yomukaku_memo @yomukaku_memo

meteorはとても面白い。すごくisomorphic。ただし、ほんの少し触ってみた感じでは、サーバーのコードもクライアントのコードも表にダダ漏れの露出狂状態になる。きっとまっとうな書き方があるはず。 #meteor

2012-04-11 11:17:15
yomukaku_memo @yomukaku_memo

@sugyan いやぁこれスンゴイ。というか、meteorは「ヲタを支える技術」系のアプリに使えるのでは? ただし、isomorphic過ぎてサーバー側のコードも全てブラウザ側で見えちゃうのがコワい。

2012-04-11 11:19:52
すぎゃーん💯 @sugyan

@yomukaku_memo ふむー、まだよく分かっていないですがクライアント側のコードで何でもやっちゃう感じですかね。ただ普通にnodeでアプリ作り慣れていたら敢えてコレを使う必要もなさそうで、どういった層をターゲットにしているのかなぁ、と少し思ってしまいました

2012-04-11 11:22:15
yomukaku_memo @yomukaku_memo

@sugyan 新しもの好きな層 :-) 名前がmeteorなだけに中身コメットだったらキツイかな。実装をちょっと見てみよう。ともあれsocket.ioよりとっつき易い感あり。

2012-04-11 11:27:07
すぎゃーん💯 @sugyan

@yomukaku_memo たしかに、cometとの関連を期待してしまいますね。インストールして /usr/local/meteor を見てみるとなかなか盛りだくさんでビックリ。。

2012-04-11 11:37:54
yomukaku_memo @yomukaku_memo

@sugyan meteor create --example leaderboard でサンプルアプリのプロジェクトを作って動かせる様子。

2012-04-11 11:42:18
すぎゃーん💯 @sugyan

@yomukaku_memo どうもそのへんはSockJSというのが使われているっぽいですねぇ .meteor/local/build/static/packages/stream https://t.co/A7zxTHsT

2012-04-11 11:58:09
yomukaku_memo @yomukaku_memo

@sugyan ありがとうございます。SockJSというの初めて知りました。これはこれで別途みておきたいですね。

2012-04-11 12:02:56
すぎゃーん💯 @sugyan

@yomukaku_memo 僕も初めて知りました。Socket.IOとの差異がどのへんにあるのか気になりますね…

2012-04-11 12:07:07
すぎゃーん💯 @sugyan

[JavaScript][websocket][library]SockJS、知らなかった。Socket.IOと近いと思うのだけど、違いは何だろう?サーバ側の実装がerlangやtornadoなど豊富なのが特徴なのかな? / “soc…” http://t.co/hZNsjBax

2012-04-11 12:16:29
yomukaku_memo @yomukaku_memo

@sugyan サッと観るかんじ、socket.ioとスペック上はあまり変りないかも。hybi-10からjsonp-pollまで対応しておりnettyつまりPlayでも動く様子。cookieの扱いとかどうなんだろうとか気になるも、これは試すまで不明。

2012-04-11 12:19:58
すぎゃーん💯 @sugyan

@yomukaku_memo なんか、説明みる限りそんなかんじですよねー。たしかにcookieの扱いまわりは違ってそうですね。うむむ

2012-04-11 12:23:01
yomukaku_memo @yomukaku_memo

meteorのプロジェクト直下のserverディレクトリの中で任意の数/ファイル名のサーバー側コードを書けばクライアント側からは見えない。 #meteor

2012-04-11 13:31:39
yomukaku_memo @yomukaku_memo

meteorはmongoでしか使えないわけではない。sqlite3でもOK。適宜sqlへのラッパーを書いてあげれば良いだけ。 #meteor

2012-04-11 13:35:12
yomukaku_memo @yomukaku_memo

meteorのサーバー側コードは、1リクエストに対し1スレッドで動く。いわゆる「普通」のリニアな動作。nodeの世界の普通であるところのasyncは敢えて行わない設計上の選択。

2012-04-11 14:02:24
yomukaku_memo @yomukaku_memo

engine.ioはnpmのリポに無い。故にnpm install https://t.co/GYEqY6Jy

2012-04-11 16:18:20
yomukaku_memo @yomukaku_memo

meteorがあまり広まらないとしたら、その理由はたぶん単一ページアプリを作るためのものだから、ではなかろうか。#meteor

2012-04-11 22:35:53
yomukaku_memo @yomukaku_memo

nodeはio処理 > cpu処理なのでviewのレンダリングは担当せず、データを出すだけにしてレンダリングをクライアントに丸投げするのが吉。この点でhaml, jade, erbはcpuヘビーで×。hogan.js等のlogic lessが○。

2012-04-12 15:59:50
yomukaku_memo @yomukaku_memo

@sugyan SockJS夜通し試してみた :-) CookieはCSRF防止のため一切使わせない設計。ブラウザの同定は各自実装せよという筋。1アプリ多ソケット、broadcast, unicast, multiplex等がsocket.ioと比して簡素堅牢で事故りにくい。

2012-04-13 12:03:23
yomukaku_memo @yomukaku_memo

nodeのwebsocket用モジュールにはSocket.IOの他にSockJSもあり、簡素で良い。https://t.co/xTuRFDzA

2012-04-13 12:04:38
すぎゃーん💯 @sugyan

@yomukaku_memo おぉぉ、早い…! ありがとうございます!! Cookie一切使えない、となるとclientの認証とかはclient側で明示的にcookieを送るように、とかする感じになりますかね…?

2012-04-13 12:05:50
yomukaku_memo @yomukaku_memo

@sugyan 一切使えないというのは嘘になります。javaの世界でいうsticky sessionは使えます。ただしsocket.io世界のような意味でのcookieは一切無い。別途同定用のIDをview -> websocket -> ctrlerみたいに渡す作り込み必要。

2012-04-13 12:08:00
すぎゃーん💯 @sugyan

@yomukaku_memo そうですかー。なにげにSocket.IOのhandshakeを使ったauthenticationは結構便利だなーと思っているので、乗り換えるとしたらそのあたりがネックになりそうな気がします…

2012-04-13 12:10:14