2008年1月30日星期三

多人在線聊天

這個是突然想到的主意
剛剛瀏覧網站時想到,怎麼這個網站沒有留這些互動功能?
不過這是一個資料性質的網站
就像維基百科一樣,不怎麼需要互動功能吧?
但現在很流行社區化
甚麼網站都要加留言功能
而且甚麼地方都要加個留言,還有最新留言呀、最新貼子等等一堆垃圾
為甚麼沒有一個軟件,可以即時和正在瀏覧同一網頁或同一網站的人聊天?
………………………………
之前我也想過,寫一個軟件
DHT IM
使用P2P網絡的IM
P2P網絡上的Node分為SuperNode和Node
SuperNode可以承受一定數量的普通連接(非P2P)
用戶生成新密匙也由SuperNode負責,並傳送至用戶的E-mail

聊天也分為公共聊天和私人聊天
公共聊天就和IRC一樣
不過你所說的話全部人都會看到
使用P2P網絡傳送內容(可能會先進行壓縮)
能使用頻度標簽(Channel Tag)
使用後只會見到相同標簽下的內容(就像IRC的一樣)
能同時使用多個標簽
也有Anti-Spam功能
不過可能出現多人使用同一名稱的情況
公共聊天時使用的名稱和私人聊天的分開,可以隨時更改

私人聊天內容是直接傳送,不經過P2P網絡
但也可以群聊(人數可能有限制)
內容會加密,使用公共密匙加密方式
第一次使用需要生成密匙(由自己生成)
公共密匙是傳送給另人的,檔案名稱是自己的E-mail(這樣應該不可能出現相同名字的況,而且符合我希望的IM、E-mail整合)
私人密匙則是自己保管(檔案名稱固定)
私人聊天會以E-mail作識別
也可以使用nickName(可隨時更改)
contact list是某個目錄,裏面存放別人的公匙
要把其他人加入contact list有兩種方法
第一種是用P2P網絡搜尋(可搜尋多種屬性,包E-mail和nickName)
確定加入後就會收到別人傳送過來的公匙,這樣就加入成功
當然也會把自己的公匙傳送給別人
online時會對contact list裏每個人都發一句加密了的信息(例如: i'm online)
如果解密出正確的信息,就會顯示他online(對新加入的連絡人也會做同樣的事)
這樣就不怕帳號被別人非法使用
所以登入網絡時只需要你的私人密匙
要保管好
此外,並不需要登入密碼,是使用私人密匙來驗證身份
如果私人密匙丢失了就重新生成吧
但這樣就需要把新的公匙再次傳送給你contact list裏的所有人(萬一有人沒online你就不能把新的公匙給他,很麻煩。所以要小心保管你的私匙)
(當然也可以在E-mail裏找回來)

第二種方法就很簡單
用自己的方法交換公匙就好了
放在某個目錄下(例如: user)
在該目錄下也可以使用資料夾實現群組(Group)

對於私人聊天,所有用戶的身份像徵都只靠密匙
而公開聊天,則可以利用過濾器的方式
同時實以舊有的「頻度」方式
也可以實現更另類的方式
例如一開始講的,過濾器為網站的URL
這樣就可以和正在瀏覧同一網站的人聊天
當然,程式要能同時使用不同的過濾器
而且每個都要在獨立的分頁運作,不過對話內容可能會混亂
發佈留言

熱門文章