HTML5 WebSocket 多人連線麻將

之前以java實作了多人連線的麻將Client及Server,現在加上使用HTML5 WebSocket的client端,經最新版的FireFox及Chrome測試。這同樣只是一個Demo,由簡單AI打麻將。現在二種不同平台不同網路協定的Client,可以連線對打麻將了。


;

底下對於WebSocket的Server及Client實作作一個重點摘要。

1,依據RFC6455完成WebSocket的Handshake,網路上有很多資料細節這裡就不多作說明。需要注意的是,對於"Connection: "這條內容,Client送給Server什麼,Server就需要回同樣的東西給Client。例如:Chrome送給Server的是"Connection: Upgrade", 而Firefox送給Server的是"Connection: keep-alive, Upgrade"。Server端對Handshake的回應也是以HTTP response形式,之後就可作一般的socket讀寫。

2,Server端的讀寫,需要特別注意的是Payload len的處理:如果小於等於125,那就是原始資料長度;如果等於126,則實際資料長度為接下來的二個byte指定的16bits數字;如果等於127,則實際資料長度為接下來的八個byte指定64bits數字。

3,Client端的onmessage事件中,如果處理的資料是binary,需對傳入的物件作型別檢查。

ws.onmessage = function (evt) {
  if (evt.data instanceof ArrayBuffer) {
  } else if (evt.data instanceof Blob) {
  } else if (typeof evt.data === "string") {
  } else {
  }
}


留言

這個網誌中的熱門文章

以lex/yacc實作算式計算機

猜數字遊戲 (電腦猜人)

KillSudoku 4顆星精彩數獨詳解 - 鍊技巧