文件位置:
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",
})
}
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": ""
}
Leaf服務器接到的測試結果:緩存
H5接收到Leaf服務器發回數據測試結果:服務器