有了 GWT,誰還想去碰 JS 啊...... 囧>於是 google 了一下,發現這兩個 project:gwt-gae-channel、gwt-channel-api 有將 Channel API 包好給 GWT 用,不過各有優缺點,茲簡單分析如下:
- gwt-gae-channel:說穿了就是很直白地作一個 JS wrapper,把 JS 有關的部份包起來,所以程式碼寫起來很... 嗯... 啊... 人各有喜好 XD。沒有打算處理「取得 token」、「送訊息給 server」是一大敗點(作全套啊老闆),理論上一個 channel 只能在 constructor 時給定一個 SocketListener 實在沒啥彈性。不過可以自動 load Channel API 的 script 還蠻不錯的。
- gwt-channel-api:整個程式看起來 & 寫起來都 OO 許多。不過原始的寫法只有處理 onmessage(),其他 onopen()、onclose()、onerror() 都沒辦法處理;需要在 host page 加上 load Channel API 的 script 敘述,這讓我不太滿意(會忘記啊老闆)。不過最大的亮點是 server push 的資料可以自動轉換成 object,這實在非常 GWT 的作法啊..... (y)
好的,於是就以 gwt-channel-api 為主要參考對象、搭配 gwt-gae-channel,重新製作成這玩意:[GF] GWT 版 GAE Channel API \囧/
使用方式在連結裡頭都有,就不多說了,來講講到底做了哪些改進:
- 自動 load Channel API 的 script
- 可傳遞/接收自訂 object
- 使用 event bus,可選擇掛載哪些 handler、也可對同一種 event 掛載多個 handler
- 可以同時開啟多個 channel
- 繁體中文版說明文件(是說,我也寫不出英文版)[毆飛]
- (自以為)寫起來很 GWT
順帶一提,關於授權的事情我非常困惑。自己寫的當然沒啥問題、 ChannelServiceServlet 是直接使用 gwt-channel-api 的 ChannelServer,所以授權申明完全保留,應該也沒啥問題。那把 A 的 method 卡進 B 的 class 中,那這樣到底要沿用那一邊的授權? 還是完全不管當成自己寫的...... [炸]
無論是授權問題 or 程式碼問題,如果有任何批評建議,還請各方大德不吝指教。
ps. source 在 jar 檔裡頭有。因為整個 GodDamn-Fuckwork 的 source code 還很亂,所以就先不 commit 上 Google Code...... XD
沒有留言:
張貼留言