Websocketなどの持続接続型サーバ

Exchangerとは
Websocketなど接続が持続する処理にFasctCGIを利用して処理できるサーバです。

[github:exchanger]
exchanger

Exchangerフロー
001
接続処理はExchangerサーバが処理し、アプリケーション処理はFastCGI(php5-fpm)で行います。

002


チャットアプリ

・8888ポートの待受をexchangerサーバ
・アプリケーション処理をphp5-fpm
・ブラウザ側処理はjavascript


感想
私は、PHPerと思います。
ExchangerはC++で作成しました。
C言語をまともに使ったのも5年ぶりぐらい、C++はVC以来なので10年以上ぶり
C++の書き方が合っているのか、。。。ではあります。

fluentdをPHPでも作ってしまえと思いphp5-tailを作ったときにモジュールを調べました。
その時にlibeventにヒットしました。
phpからもlibeventは簡単に使えて、websocketサーバなども作ってみました。
その時に、phpをサーバとして使ってよいものか?
下手にCで作るよりはphpに任せたほうがまともに動くだろうとは思います。

私は、PHPが好きなんです。
リアルタイム処理をnode.jsに全部持っていかれるのが嫌なのです。
PHPでテンプレートエンジンを使うバカが大っ嫌いなのです。

nginxなどから直接、FastCGIでwebsocketが使えないのかな?
調べた限り納得できるものがなかったので作ってみたという感じです。

幸いlibeventがあまりにも手軽なため、C++で作ることができました。

Exchangerは、FastCGIをアプリケーション処理に使います。
ExchangerとFastCGIの共有リソースとしてRedisを使います。

自分の好きな言語でリアルタイム処理のアプリケーションが作れるようになると思います。


ToDo
・SSL/TLS処理の実装(テストなどがまだ)
・セキュリティ強化
・再接続関連
・サンプルアプリ(node.jsから移植)