チャット機能
SWから外す?帯域使いっぱなし/cgi起動しっぱなしはまずいからなぁ…
- ajaxを使う
- コネクションしっぱなし
仕組
- 各clientに数字割り当て。最初の方からメインプロセスを担当する。
- メインプロセスが落ちたら次の若い数字のclientが担当。
- メインプロセスはdat管理と保存、各clientにシグナルを送る、client管理と保存を担当する。
- メインプロセスの移行はatexitを使えば結構すんなり行けるのでは? (clientとの通信の確認は難しいけど、別にメインプロセスさえあればそれでいい。)
- メインプロセスはSIGUSR2を使って移行に成功したらSIGUSR2を返して移行完了。
- main.prc(メインプロセスを書く)/dat.txt/append.dat。書き込みプロセスは内容をappend.datに追記、メインプロセスにSIGUSR1を送る。メインプロセスはappend.datの内容をdat.txtに書き込み、append.datを削除、他のプロセスにSIGUSR1を送る。
- メインプロセスがいなくなった時、main.prcを削除。
- 書き込む内容を送るのはメッセージキューか共有メモリを使った方がよさげ。D言語で使うにはアセンブラを使うとかラッパを使うとかする必要があるかもしれない。#もしうまく使えるならdat.txtはメインプロセスがいなくなった時で十分になるかもしれない。
メッセージキューを使うとして引継をどうするか
- 適当にクライアントリストをubyte[]化?