Ajaxを使ったシンプルなチャット

を作ってみました。
http://la.ma.la/misc/ajaxchat/

サーバーサイドのソースは5行です。
http://la.ma.la/misc/ajaxchat/write.txt

CGIを使うのは書き込みの時だけで、表示はXMLHttpRequestを使ってログファイルを直接読み込みます。更新は差分取得で転送量とサーバー負荷を減らしています。

IEとFirefoxでしか動きません。
Operaはリクエストヘッダのセットが使えないので無理。

仕組み
-HEADリクエストでログファイルのサイズを取得
-ファイル末尾1KBを取得
-レスポンスヘッダから最終更新日と現在のファイルサイズを保存
-If-Modified-SinceとRangeヘッダをセットして定期リロード

とりあえずこれだけです。参加者表示も何もつけてませんが、改造の雛形にでもどうぞ。

Range付きのリクエストは昔試したときに、ヘッダをセットしても全部取得しちゃったりと、どうにもうまくいかなかった記憶があって試してなかったのだけど、なんかうまくいくようになってる様子。
こういうのを使えば負荷を極限まで減らせるわけで、カリカリにチューニングされたデータベースと、単純な追記式のログファイルだと、どちらが負荷が少ないのか気になるところ。

DATA[count++]={name:"名前",comment:"コメント1"}
DATA[count++]={name:"名前",comment:"コメント2",mail:"メール"}
DATA[count++]={name:"名前",comment:"コメント3"}

こんな感じにすれば、追記式で柔軟なデータ構造も保存できるんじゃないか、と考えていて、これだとJSONというかJavaScriptのコードって感じだけど。

----

Rangeリクエストを試したきっかけは、これなんだけど
http://ajaxdb.jp/

これ自体は微妙というかなんというか、Rangeリクエストはブラウザのキャッシュが利かないので、データベースとして使うならあらかじめファイルを分割しておくのが普通だと思う。

例えばこれ。
http://www.oldriver.org/jsmigemo/

pure JavaScriptによるmigemoで、あらかじめ分割しておいた辞書を動的にロードすることで実現しています。やればできるものだなあ、と関心。

----
追記

Operaは8.01からsetRequestHeaderが定義されていますが、実際に送信するヘッダに反映されないようです。8.02でも同上。8.02はなにやらPOSTメソッドの場合には反映される様子。

IEやFirefoxだと、自分で定義したヘッダを追加したり、HTTPで定義されてないメソッド使ったり、基本的に何でも出来るのですがRefererやAccpect-Encodingなんかは書き換えられなかったと思う。(あんま検証してない)


WriteBacks

はじめまして。

> Operaはリクエストヘッダのセットが使えないので無理。

私もまだ試してないんですが、Opera8.01のChangeLogに、対応したようなことが書いてあります。

http://www.opera.com/windows/changelogs/801/

> Improvements to XMLHttpRequest support, added support for XMLHttpRequest.setRequestHeader.

あと、Safariでは、HEADでOpenしてもGETが投げられてしまうというバグがある模様です。

Posted by die at 2005/07/29 (Fri) 08:52:55

>Operaの

追記しました。

丁度最新版も出ていたので検証してみましたが
setRequestHeaderは定義されているだけで
実際には使えないようです。

Posted by mala at 2005/07/29 (Fri) 09:21:31

> 実際には使えない

そうなんですか。まだこれからなんですかね。
お手を煩わせました。

Posted by die at 2005/07/29 (Fri) 09:45:04

>お手を煩わせました
いや、丁度追記しようとしたところでコメントが付いてました。

使えないなら使えないでseek.cgi作ってやればいい話なんですが、中途半端に定義されてるとバージョンごとに振り分けたりしなくちゃならんので迷惑だなあ、
といった感じですかね。

Posted by mala at 2005/07/29 (Fri) 09:52:47

Ajaxでチャットしてみる

 最速インターフェース研究会様の『Ajaxを使ったシンプルなチャット』があまりに早くて格好良かったので、自分でも作ってみました。 流石にログを全部読み込んでクライアントサイドで処理しきる技術力は無かったの...

Posted by 知らないことがあってもへっちゃらさ at 2005/07/29 (Fri) 22:10:19

ご指摘を受けて

Operaで使えないRangeヘッダは廃止しました。1データ1ファイルに分割しました。
http://ajaxdb.jp/

Posted by ゼロベース石橋秀仁 at 2005/08/12 (Fri) 03:15:30

徒然日記/Ajax でチャットを作ってみた

Category Blog:[ プログラミング ] JavaScript(Ajax) でチャットのプログラムを組み立ててみました。 きっかけは、yosha_01さんのディスカス です。 はじめは、このディスカスをいじってみようと思ったのですが、汎用的なものを作ってみたかったので、最速イン...

Posted by XOOPSマニア Wiki at 2005/08/27 (Sat) 21:44:27

Link/programing

リッチインターネットアプリケーション ドットネット mono C、X Window その他言語 UML GTKプログラミング Java J2EE Programing リッチインターネットアプリケーション URL: タイトル: コメント: ...

Posted by PukiWiki Plus! (PukiWiki/TrackBack 0.3) at 2005/09/26 (Mon) 22:40:00

AjaxChat/readme

【名 称】 AjaxChat 【登 録 名】 ajaxchat_[Version].zip 【制作者名】 nao-pon http://hypweb.net/ http://hypweb.net/xoops/modules/puki­wiki/2211.html 原案: 最速インターフェース研究会 http://la.ma.la/blog/diary_200507290­022.htm...

Posted by XOOPSマニア Wiki at 2005/10/15 (Sat) 10:42:25

目指せ待機保証&登録ボーナスで20万円!

本日の待機保証情報は、ガールズオンマックスのチャットレディ募集・・・

Posted by チャットレディで行こう!待機保証で稼ぐ

at 2006/02/13 (Mon) 13:34:00

徒然日記/Ajax でチャットを作ってみた

Category Blog:[ プログラミング ] 動作例 サンプルチャットです。ご自由にお試しください。 '); //--> JavaScript(Ajax) でチャットのプログラムを組み立ててみました。 きっかけは、yosha_01さんのディスカスです。はじめは、このデ...

Posted by Wiki-自由帳 at 2006/03/08 (Wed) 10:05:17

AjaxChat/readme/AjaxChat readme

【名 称】 AjaxChat 【登 録 名】 ajaxchat_[Version].zip 【制作者名】 nao-pon http://hypweb.net/ http://hypweb.net/xoops/modules/puki­wiki/2211.html 原案: 最速インターフェース研究会 http://la.ma.la/blog/diary_200507290­0...

Posted by Wiki-自由帳 at 2006/03/14 (Tue) 01:29:18

annuncio lavoro

Blog Records:le tireur isol辿 de psg1 airsoft fusillentComments...

Posted by annuncio lavoro at 2006/11/27 (Mon) 19:43:14

annuncio lavoro

Blog Records:le tireur isol辿 de psg1 airsoft fusillentComments...

Posted by annuncio lavoro at 2006/11/27 (Mon) 19:43:17

Link/programing

リッチインターネットアプリケーション Ajax Ajax プログラミング ドットネット UML 開発環境 Tools Eclipse Webサービス XML/SOAP pygtk 関連ページ Web開発 J2EE Programing リッチインターネットアプリケーション ...

Posted by されどわれらが日々 (PukiWiki/TrackBack 0.4) at 2007/01/22 (Mon) 10:06:41

bad car credit loan personal repair

Ajaxを使ったシンプルなチャット

Posted by bad car credit loan personal repair at 2007/01/29 (Mon) 15:00:11

Black Eyed Peas

Ajaxを使ったシンプルなチャット

Posted by Black Eyed Peas at 2007/02/02 (Fri) 03:19:31

これサイトで使ってもいいですか?

軽さに感動しました!
ぜひサイトで使いたいのですがいいですか?(まだサイトはないんですが・・・)

Posted by Yunitti at 2007/02/18 (Sun) 11:51:23

movie dvd video rental

Ajaxを使ったシンプルなチャット

Posted by movie dvd video rental at 2007/04/10 (Tue) 05:27:34

dvd xxx

Ajaxを使ったシンプルなチャット

Posted by dvd xxx at 2007/04/18 (Wed) 07:20:32

JavaScript/AJAX

Link URL: タイトル: コメント: デスクトップの機能をネットワークが吸い取る---MicrosoftがGoogleを恐れる理由:IT Pro -- 2005-09-30 (金) 10:39:10 ウェブ・アプリケーションを快適に動かす新手法『AJAX』 -- 2005...

Posted by PukiWiki Plus! (PukiWiki/TrackBack 0.4) at 2007/04/28 (Sat) 20:08:18

Groupsex, Oral / Blowjob, Anal / Ass, Cumshot

Ajaxを使ったシンプルなチャット

Posted by Groupsex, Oral / Blowjob, Anal / Ass, Cumshot at 2007/06/19 (Tue) 01:16:17

adult free cams

Ajaxを使ったシンプルなチャット

Posted by adult free cams at 2007/07/12 (Thu) 02:53:17

adult live cam

Ajaxを使ったシンプルなチャット

Posted by adult live cam at 2007/07/13 (Fri) 04:07:41

adult cam web

Ajaxを使ったシンプルなチャット

Posted by adult cam web at 2007/07/27 (Fri) 05:02:48

adult cable tv

Ajaxを使ったシンプルなチャット

Posted by adult cable tv at 2007/08/07 (Tue) 08:56:17

adult free online tv

Ajaxを使ったシンプルなチャット

Posted by adult free online tv at 2007/08/07 (Tue) 21:56:32

cam girls uk

Ajaxを使ったシンプルなチャット

Posted by cam girls uk at 2007/08/11 (Sat) 06:07:55

cam chat adult

Ajaxを使ったシンプルなチャット

Posted by cam chat adult at 2007/08/11 (Sat) 23:44:14

cam girl live

Ajaxを使ったシンプルなチャット

Posted by cam girl live at 2007/08/12 (Sun) 04:27:43

adult channel tv

Ajaxを使ったシンプルなチャット

Posted by adult channel tv at 2007/08/30 (Thu) 07:22:55

adult cable tv

Ajaxを使ったシンプルなチャット

Posted by adult cable tv at 2007/08/30 (Thu) 13:04:19

adult free internet tv

Ajaxを使ったシンプルなチャット

Posted by adult free internet tv at 2007/08/31 (Fri) 04:09:46

cam whore

Ajaxを使ったシンプルなチャット

Posted by cam whore at 2007/09/01 (Sat) 02:41:26

adult free online tv

Ajaxを使ったシンプルなチャット

Posted by adult free online tv at 2007/09/04 (Tue) 08:06:46

adult baby tv

Ajaxを使ったシンプルなチャット

Posted by adult baby tv at 2007/09/04 (Tue) 14:28:59

adult free tv web

Ajaxを使ったシンプルなチャット

Posted by adult free tv web at 2007/09/05 (Wed) 02:00:37

adult satellite tv

Ajaxを使ったシンプルなチャット

Posted by adult satellite tv at 2007/09/09 (Sun) 00:27:35

adult japan tv

Ajaxを使ったシンプルなチャット

Posted by adult japan tv at 2007/09/13 (Thu) 03:05:28

adult tv web

Ajaxを使ったシンプルなチャット

Posted by adult tv web at 2007/09/13 (Thu) 19:44:29

caseys cam nude

Ajaxを使ったシンプルなチャット

Posted by caseys cam nude at 2007/09/14 (Fri) 05:15:22

cheap phentermine

Combien il co短te, pour d辿velopper un drapeau sur ton blog?

Posted by buy phentermine at 2007/09/14 (Fri) 06:37:54

adult program tv

Ajaxを使ったシンプルなチャット

Posted by adult program tv at 2007/09/15 (Sat) 05:22:31

cams sex

Ajaxを使ったシンプルなチャット

Posted by cams sex at 2007/09/15 (Sat) 19:15:04

candid cam teen

Ajaxを使ったシンプルなチャット

Posted by candid cam teen at 2007/09/16 (Sun) 03:00:13

adult channel free tv

Ajaxを使ったシンプルなチャット

Posted by adult channel free tv at 2007/09/18 (Tue) 04:26:12

asian live cams

Ajaxを使ったシンプルなチャット

Posted by asian live cams at 2007/09/19 (Wed) 04:41:26

adult movie porn

Ajaxを使ったシンプルなチャット

Posted by adult movie porn at 2007/09/20 (Thu) 20:49:02

軽快さに感動したチャット

最速インターフェース研究会 :: Ajaxを使ったシンプルなチャット
・・・感動した。だいぶ前のものですけど。
既存のHTTPの機能と組み合わせるとここまでシンプルにできるものなのか...。
ホント見習いたいよ。自分のコードの複雑さ見たら泣けてきた...。

Posted by HINATA Program Create at 2009/02/01 (Sun) 15:01:19
TrackBack ping me at
http://la.ma.la/blog/diary_200507290022.trackback
Post a comment

writeback message: Ready to post a comment.







spam yoke. nanimo ireruna.