トップ «前の日記(2009-08-05) 最新 次の日記(2009-08-07)» 編集

Route 477



2009-08-06

[prog] ReverseHttpに関する俺の理解 (WebHookでクライアントマシンに通知を送る技術)

  1. [背景] WebHookは便利だお!
  2. [問題点]でもローカルマシンは通知先にできないお……*1
  3. [解決法] だからwww.reversehttp.net/ に中継させるお!

(AA略)

ということだと理解した。

つまり「ReverseHttpとは、localhostをWebHookの通知先にする技術である」。

もっというと、「ReverseHttpとは、WebHookを使ってクライアントマシンに通知を送る技術である」。

Q. cometと何が違うの?
A. 中で利用してる技術はlong pollとかで一緒だったりするけど、その使い方が違う。cometはサービス提供者がwebサーバと別にcometサーバ立てたりして面倒だけど*2、ReverseHttpは中継サーバがそのへんを面倒見てくれるため、サービス提供者はWebHookを使ってクライアントを表すURLに通知を送るだけで良い。
Q. クライアントはブラウザじゃないといけないんですか?
A. cometにしろReverseHttpにしろ、「HTTPプロトコルを使って通知を送る技術」なだけで、別にブラウザはなくてもいい。例えば冒頭のリンク先のデモとかね。
Q. クライアントマシンに情報を送るのってそんなに大変なんですか?
A. HTTPは基本的にプル型の技術でプッシュ型ではないからねぇ。「イベントが発生したタイミングで即」情報を送るには何か凝ったことをしないといけない。
Q. FlashならTCPで接続できますよ
A. でもそれはサーバ側もTCP喋らないといけないわけだよ。WebHookならURLにアクセスするだけだから確かに簡単ではある。
Q. cometといえばチャットですが…
Q. チャットみたいな頻度で通知送っても中継サーバは大丈夫なんですかね?
Q. チャット以外にプッシュしてほしい情報とかあるんでしょうか
A. それがないからcometは流行らな(ry)。そんなこと言ってる暇があったら何か面白い使い道を考えた方が楽しいですよ。

*1 通知元のサーバから見えないといけないので、グローバルIPがあり、ポートを開ける必要がある

*2 実験レベルなら、単に応答が長いCGIでも用意すれば済むけど、本格的にやるなら専用のソフトウェアを使わないと生きてるコネクションが多すぎて困ったことになる。