就我看來,用 Node.js 比 Ajax Push Engine 困難很多。
不過,做出來的東西不論是自由度或者延展性,真的「好很多!」
雖然目前自己寫的 Chat Room 出了點 Bug (又忘記備份原始碼)
不過還是能正常使用啦!
不過既然是使用 Ajax 技術來實踐,那麼跨域的問題真的就很惱人。
雖然 jQuery 有提供所謂的 JSONP 來實踐跨域。
不過我用 FireBug 看到那不斷增加的HTML我就頭昏(目前暫時使用 jQuery-JSONP Plugin )
那麼,就小小說一下我的「心得」吧!
我是參考官方的 Chat Room Deoms 原始碼來撰寫(縮減成練習的版本)
這種聊天室執行時,會消耗「記憶體」
不過就官方的程式運作來看,幾百筆資料似乎也才吃掉數MB(還是數千筆我忘了……)
聊天室整體的構造大致如下:
1. channel (應該說物件嗎?)
2. sessions (Array )
3. methods (Array)
其中 channel 負責聊天訊息, sessions 負責紀錄進入聊天室的人,而 methods 則是我用來儲存HTTP請求回應的陣列……
channel 包含兩個函式,一個負責在 messages 陣列新增聊天紀錄,另一個則負責存取 messages 陣列。
sessions 則儲存所有使用者的id, 並有 createSession() 函式負責加入新使用者。
* sessions[id].destory() 是消除的函式(放在每個使用者的資料裡面)
而 methods 是一個陣列,並且對應一個 handler (官網好像是這樣稱呼)
當 HTTP Server 接到請求,會判斷抓哪一個陣列出來使用。
這樣大致上就完成架構了!
在撰寫過程中,幾乎沒有停下來。
(大概是昨晚有簡單做一個收發的 test 所以才得力很多。)
最後中途是修正了幾次 Bug 才完成運行。
* Node.js 發生程式錯誤會終止程式執行。
不過我很佩服官方的聊天室,好像運行一個多月都沒停止。
(原始碼裡面明明有會卡死的部份,不過似乎不受影響)
晚點檢查完我的聊天室和跨域,就要進一步發展啦!
(製作特製的 lib 來寫 Web Game~)