本節完成如下知識點:
git
√H5客戶端處理Leaf返回消息處理(MongoDB暫時不接入)github
√討論下後面咱們以Leaf遊戲框架+H5作什麼遊戲
數據庫
√leaf遊戲服務器處理玩家登錄邏輯json
√H5客戶端實現(未解析數據BLOB)
緩存
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