Block Rockin’ Codes

back with another one of those block rockin' codes

Chrome Socket API で WebSocket

intro

Chrome Canary で Socket API が listen() をサポートしたってことで、
ブラウザ上にサーバを立てるという矛盾した行為が、
にわかに流行っているようです。

HTTP Server on Chrome Socket API

で、以下のようにするとサーバが立てられて。
クライアントからアクセスすると HTTP が配信されたりします。


Chrome Socket API Server


しかし、 何故か accept() が一回しかリクエストを処理できず、
現状一回処理したら立ち上げ直す(= Chrom 再起動?) しかないので、
仕方なく accept() をその都度行わないといけない状況です。
(多分そのうち改善されるんだろうと思います。)

WebSocket Server on Chrome Socket API

ということで、動くか確かめて見たくなったので、
ちょっとやってみました。
ソースはこちらです。

Jxck/ChromeWebSocketServer · GitHub


これを Chrome の Canary でたちあげて、
コンソールから下記を叩くと、
メッセージがやり取りできました。

var ws = new WebSocket('ws://localhost:3000');
ws.onopen = function() {
  ws.send('hoge');
  ws.onmessage = function(e) {
    console.log('receive', e.data);
  }
}

面倒なんで 4byte 送ったら 4byte 返ってくるだけです。


WebSocket サーバの実装とプロトコル解説 - Block Rockin’ Codes


で書いたコードを移植した感じです。

まとめ

素振りです。特に意味は無いです。
個人的には TypedArray の API より Node の Buffer の方がわかりやすいなぁ。