社區leaf學習筆記|07. 遊戲玩家註冊、登錄(下)

本節完成如下知識點:
git

H5客戶端處理Leaf返回消息處理(MongoDB暫時不接入)github

討論下後面咱們以Leaf遊戲框架+H5作什麼遊戲
數據庫


上節回顧

leaf遊戲服務器處理玩家登錄邏輯json

H5客戶端實現(未解析數據BLOB)
緩存


H5客戶端處理Leaf返回消息處理

       function onMessage(evt) {
           console.log(evt);
           var filrReader = new FileReader();
           filrReader.onload = function() {
               var arrayBuffer = this.result;
               var decoder = new TextDecoder('utf-8')
               var json = JSON.parse(decoder.decode(new DataView(arrayBuffer)));
               console.log(json);
           };
           filrReader.readAsArrayBuffer(evt.data);
       };

Leaf服務器返回給H5的JSON消息結構
文件位置:server\login\internal\handler.go服務器

package internal
import (
   "reflect"
   "server/msg/protocolfile"
   "github.com/name5566/leaf/gate"
   "github.com/name5566/leaf/log"
)
func handleMsg(m interface{}, h interface{}) {
   skeleton.RegisterChanRPC(reflect.TypeOf(m), h)
}
func init() {
   // 向當前模塊(login 模塊)註冊 Protocol.UserLogin 消息的消息處理函數 handleTest
   handleMsg(&Protocol.UserLogin{}, handleTest)
}
// 消息處理
func handleTest(args []interface{}) {
   // 收到的 Test 消息
   m := args[0].(*Protocol.UserLogin)
   // 消息的發送者
   a := args[1].(gate.Agent)
   // 1 查詢數據庫--判斷用戶是否是合法
   // 2 若是數據庫返回查詢正確--保存到緩存或者內存
   // 輸出收到的消息的內容
   log.Debug("Test login %v", m.LoginName)
   log.Debug("---------", Protocol.UserLogin{
       LoginName: "client",
   })
   dd := &Protocol.UserLogin{
       LoginName: "client",
       LoginPW:   "client",
   }
   //a.PlaySendMessage(dd)
   a.WriteMsg(dd)
}

測試結果

H5網頁顯示結果 以下:app

圖片

相關文章
相關標籤/搜索