10/13
Just Do(土) It. で Flash + Socket.IO
10/8(土) 、下北沢オープンソースカフェで開催された Just Do(土) It. と言うイベントに参加してきたので
その参加報告をば。
日記的な内容なのであんまり技術的なことは期待しないでください。
土曜日にあったイベントなのになぜこんなに記事を書くのが遅くなったかというと決してゲームをしていた訳ではありません。
決して。
ライブラリ開発とかライブラリ開発とか
では自分は何をしていたかというと
Socket.IO と AS3 でうまいことやり取りするライブラリをコツコツ作っていました。
その場でライブラリ開発用のテストサーバーを組みつつ、クライアント側 js、 AS3 と、
ついでにサンプルをその場でゴリゴリ組んでいました。
「普段やらないこと 」といわれると正直ディレクションぐらいだったので
前々から少しいじっていた Socket.IO のライブラリ開発を持ち込んだわけです。
ライブラリのライブラリってなんやねんという突っ込みは華麗にスルーしつつ、
わりとやることが多めで、当のライブラリも全然進んではいないのですが
Just Do(土) It. で作ったライブラリの原型を使ってこんなモノが作れるよ的な感じで UP したのが今回のサンプルです。
あくまで実験的サンプルなのでまともな運用なんて考えてません。
あとサーバーは自宅サーバーに構築した KVM 上で動いているので完全に個人的な都合で落ちる可能性があります。
ビジュアル的な部分は Wonderfl で公開されている @nutsu さんのものを拝借させていただきました。
なぜつくろうと思ったのか
Socket.IO は本来 Flash の Socket 機能についてサポートしているとのことで
そんなものなぜわざわざ作る必要があるのかというと、
flash.net.Socket と Socket.IO の仕様の違いだったり、いくつか問題があったりするからです。
確かに Flash 側から Socket.IO サーバーに Socket 接続できることは確認できました。
ところがなぜか Socket.IO 側で Flash からの接続があったことを確認できず
めんどくさいなぁと思っていっそのこと WebSocket に対応させる意味も兼ねてライブラリをつくろうと考えたわけです。
いやむしろ普通に flash.net.Socket で接続してサーバー側でこうすればレスポンス取れるよという方がいれば
ご教授願いたいです。
ちなみに話をするとよく node.js ビルトインの net パッケージと勘違いしてる人が多いようです。
たしかにあれは僕も5分とかからず試せましたよ。えぇ。
ちなみに net を使った Flash Socket サーバーはこんな感じ
var net = require('net');
var server = net.createServer(function(socket) {
socket.setEncoding('utf8');
socket.on('connect', function() {
console.log('ほむほむ');
});
});
server.listen(3000);
console.log('Server runninng at:3000');
あとは Flash 側で flash.net.Socket をインポートして
public function SocketTest(){
var socket:Socket = new Socket( '127.0.0.1', 3000 );
socket.addEventListener( Event.CONNECT, _connectedHandler );
socket.connect();
}
private function _connectedHander( event:Event ):void {
trace("魔法少女なれや");
}
まぁ技術的な詳しい話はライブラリが完成した際に書くことにします。
サーバーやってる Flasher が少ないのか、Flash や AS3 いじるサーバー屋さんが少ないのか
とにかく Flash と node.js を絡めた情報が少なくてわりと道は険しい感じですね。
ひとまずライブラリを完成させつつ、次は iOS から接続してみようと思います。
で、イベントの感想ですが普段自分が関わっている業界とはまた違った業界の技術者さんと交流しながら作業できたので
いい刺激になったなぁと月並みな感想を上げてみます。
下北沢オープンソースカフェでは毎週色々と勉強会やイベントが行われているようなので興味のある方は是非足を運んでみると良いと思います。

