タグ別アーカイブ: socket.io

大阪Node学園一時限目に参加してきた!


 

node.jsを使う事が増えてきているこの状況で今回の勉強会に参加してきました!!コミュニティの皆さんもとてもすごそうな人が多く、いいなぁと思った!!

懇親会には参加できなかったのが少し残念だったなぁ。イベント自体、とても面白く、いい勉強になった。。また近々2時限目を行うってことだったのでまた参加しよう!!

特に発表のテーマにもあった「ストリーム」はとても興味深く聞く事ができた!

たまたまnode.jsでzlibやfs、ストリーム、バッファなどを使って圧縮ファイルをアップロードしてから解凍し、パースするような処理を作ろうとしていたので、タイミングも良かったーー

「ストリームを制するものは、nodeを制する」この言葉も印象的だった!!!

ATND情報 http://atnd.org/events/23378
動画 http://www.twitvid.com/craftgear

 

Node.jsランダウン 〜怖くないNode.js入門〜

formidable 1.8からexpressの設定するだけでアップロードできる!

app.use(express.bodyParser({uploadDir:'./upload_tmp'}));

【リクエストを受ける側では以下のようにパス名などを受け取れる】
app.post('/items', function(req, res) {
    console.log(req.body);
    console.log(req.files);
    res.send('DONE', 200);
});

 

 

Socket.IOとリアルタイムなナニか

socketの名前空間、コネクションの共有範囲を分ける クライアントのjsで .ofというメソッドを使う。

1つのページを同期させるモードと同期させないモードに分けることで、プレゼン時は同期をして公開すれば発表者が画面を操作できる。

webSocketの使い道 m2m(マシンツーマシン) PCやモバイル端末だけではない。

【所感】

node.jsソケットを使ったプレゼンツールを作ってみたい(HTML5等を使う!)Canbusでユーザにも書いてもらえる。かつチャットsocket.ioを使えるようにする。講義中や公演中にパワポの資料とかだけではなく、web画面で動かして、さらにマーカーで文字が描けるようにすれば良さそう!impress.js で動的なWebプレゼンの見せ方!!に応用する! 

 

 

Streamについて(仮)

nodeの中I/Oのインターフェース

基本は次の2つのストリーム readable Stream / writable Stream

StreamObject は EventEmiter

イベントをonメソッドで受け取り .on(‘イベント名’, function(){ })

 

●readble streamの使い方

・メソッド

resume(読み込み開始), pause(読み込み止める), destroy

・定義されたEventの種類

data(ストリームに読み込みを続けているとき),end(読み込みが終わったとき(EOFまで読み込んだとき)), close(readableストリームを閉じたとき), error(エラー寺のイベント)

 

●writable streamの使い方

・メソッド

write, end, destroy

・定義されたEventの種類

drain, close, error

 

コピーするときはreadableストリームのresumeを実行した後readbleストリームのイベントを.onメソッドで受け付けながらwraitableストリームにwriteやendなどのメソッドを呼び書き込みを行う。

 

●pipe()について

readableで読み込んでパイプメソッドでwritableに渡して書き込む。。

コピー元ファイル(readable stream)を読み込みながらwritable streamに書き込んで一時的に止めてpause()する、その後resumeを行う。を自動で行う

 

●ストリームで表現されるケース

HTTP
http server Request (Readable)
http server Response (Writable)

Zlib
all classes(Readable/Writable)

圧縮ファイルを読み込んで
fs.Readable  ーpipeー>   zlib.Gzip  ーpipeー>   http.response

 

「drain は、WritableStream において、書き込み先が書き込む準備ができたとき発生するイベント。

書き込みがそれ以上できないときに、write メソッドが false を返し、そののち再開できるときに drain イベントが走る。」

 

【気になる事】

zip,gzipの違いは??

 

ストリームに関する参考リンク
http://d.hatena.ne.jp/Jxck/20111204/
http://jxck.tumblr.com/
http://jxck.tumblr.com/post/11984552004/node-js-stream

 

 

LTに出てきたキーワード

Express
modelがない!!
routes/index.jsにビジネスロジックを書くのか?けれど、model フォルダ作ってmongoose(モデル)の定義を入れた。

impress.js(http://bartaz.github.com/impress.js/
google hangout
Web RTC http://d.hatena.ne.jp/Syunpei/20111212/1323679295