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

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

文件位置:
server\login\internal\module.go
注:此節不連接MongoDBhtml

module.gogit

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)
   // 給發送者回應一個 Test 消息
   a.WriteMsg(&Protocol.UserLogin{
       LoginName: "client",
   })
}

H5客戶端實現

index.html:

github

<head>
   <meta charset="utf-8" />
   <title></title>
</head>
<body>
   <h3 style="color: cornflowerblue;">Golang語言社區(www.Golang.Ltd)</h3> 發送數據: <input type='text' id='name' value="Leaf測試">
   <input type="submit" onclick="login()" />
</body>
<script>
   var wsUri = "ws://127.0.0.1:8889/?{'new':3}";
   var json;
   function login() {
       var Data = {
           LoginName: "Golang.Ltd",
           LoginPW: "123456",
       };
       var json = {
           UserLogin:Data
       }
       var goServerJson = JSON.stringify(json);
       wsUri = wsUri;
       console.log(wsUri);
       doSend(goServerJson);
   }
   var output;
   var websocket1;
   function init() {
       output = document.getElementById("output");
       testWebSocket();
   }
   function testWebSocket() {
       console.log(wsUri)
       websocket1 = new WebSocket(wsUri);
       websocket1.onopen = function(evt) {
           onOpen(evt)
       };
       websocket1.onclose = function(evt) {
           onClose(evt)
       };
       websocket1.onmessage = function(evt) {
           onMessage(evt)
       };
       websocket1.onerror = function(evt) {
           onError(evt)
       };
   }
   function onOpen(evt) {
       console.log("CONNECTED");
   }
   function onClose(evt) {
       console.log("DISCONNECTED");
   }
   function onMessage(evt) {
       var data = evt.data;
       console.log("data=" + data);
   }
   function onError(evt) {
       console.log(evt.data);
   }
   function doSend(message) {
       console.log(message);
       websocket1.send(message);
   }
   window.addEventListener("load", init, false);
</script>


頁面截圖:web

圖片

簡單說明下,H5的部分代碼
1 連接端口爲何是8889 ?
緣由是咱們在leaf架構中配置的是8889
文件位置:
server\conf\server.json數據庫

server.jsonjson

{
   "LogLevel": "debug",
   "LogPath": "",
   "WSAddr": "127.0.0.1:8889",
   "CertFile": "",
   "KeyFile": "",
   "TCPAddr": "127.0.0.1:8888",  
   "MaxConnNum": 20000,
   "ConsolePort": 8012,
   "ProfilePath": ""
}

H5測試連接Leaf服務器

Leaf服務器接到的測試結果:緩存

圖片

H5接收到Leaf服務器發回數據測試結果:服務器

圖片

相關文章
相關標籤/搜索