Skip to content

Commit

Permalink
zinx demo
Browse files Browse the repository at this point in the history
  • Loading branch information
jmesyan committed Feb 21, 2022
1 parent b2fd7a7 commit 7f3a0b0
Show file tree
Hide file tree
Showing 6 changed files with 161 additions and 144 deletions.
51 changes: 29 additions & 22 deletions examples/zinx_demo/backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,35 +2,36 @@ package main

import (
"fmt"
"time"

"github.com/jqiris/kungfu/v2/logger"
"github.com/jqiris/kungfu/v2/rpc"
"time"

"github.com/jqiris/kungfu/v2/channel"
"github.com/jqiris/kungfu/v2/treaty"

"github.com/jqiris/kungfu/v2/backend"
"github.com/jqiris/kungfu/v2/base"
"github.com/jqiris/kungfu/v2/launch"
)

type MyBackend struct {
backend.BaseBackEnd
*base.ServerBase
conns map[int32]*treaty.Server
}

func (b *MyBackend) HandleSelfEvent(server rpc.ServerRpc, req *rpc.MsgRpc) []byte {
fmt.Printf("MyBackend HandleSelfEvent received: %+v \n", req)
func (b *MyBackend) HandleSelfEvent(req *rpc.MsgRpc) []byte {
logger.Infof("MyBackend HandleSelfEvent received: %+v \n", req)
msgId, msgData := treaty.RpcMsgId(req.MsgId), req.MsgData.([]byte)
switch msgId {
case treaty.RpcMsgId_RpcMsgBackendLogin:
//服务端登录
resp := &treaty.LoginResponse{}
msg := &treaty.LoginRequest{}
if err := server.DecodeMsg(msgData, msg); err != nil {
if err := b.Rpc.DecodeMsg(rpc.CodeTypeProto, msgData, msg); err != nil {
logger.Error(err)
resp.Code = treaty.CodeType_CodeFailed
resp.Msg = err.Error()
return server.Response(resp)
return b.Rpc.Response(rpc.CodeTypeProto, resp)
} else {
//检查游戏通道是否建立
ch := channel.GetChannel(b.Server, msg.Uid)
Expand All @@ -44,7 +45,7 @@ func (b *MyBackend) HandleSelfEvent(server rpc.ServerRpc, req *rpc.MsgRpc) []byt
resp.Msg = "登录成功"
resp.Backend = b.Server
b.conns[msg.Uid] = msg.Connector
return server.Response(resp)
return b.Rpc.Response(rpc.CodeTypeProto, resp)
}
//游戏通道建立
ch = &treaty.GameChannel{
Expand All @@ -60,17 +61,17 @@ func (b *MyBackend) HandleSelfEvent(server rpc.ServerRpc, req *rpc.MsgRpc) []byt
resp.Msg = "登录成功"
resp.Backend = b.Server
b.conns[msg.Uid] = msg.Connector
return server.Response(resp)
return b.Rpc.Response(rpc.CodeTypeProto, resp)
}
case treaty.RpcMsgId_RpcMsgBackendLogout:
//服务端登出
resp := &treaty.LogoutResponse{}
msg := &treaty.LogoutRequest{}
if err := server.DecodeMsg(msgData, msg); err != nil {
if err := b.Rpc.DecodeMsg(rpc.CodeTypeProto, msgData, msg); err != nil {
logger.Error(err)
resp.Code = treaty.CodeType_CodeFailed
resp.Msg = err.Error()
return server.Response(resp)
return b.Rpc.Response(rpc.CodeTypeProto, resp)
} else {
//游戏机制检查
//销毁通道
Expand All @@ -79,36 +80,42 @@ func (b *MyBackend) HandleSelfEvent(server rpc.ServerRpc, req *rpc.MsgRpc) []byt
}
resp.Code = treaty.CodeType_CodeSuccess
resp.Msg = "登出成功"
return server.Response(resp)
return b.Rpc.Response(rpc.CodeTypeProto, resp)
}
case treaty.RpcMsgId_RpcMsgChatTest:
resp := &treaty.ChannelMsgResponse{}
msg := &treaty.ChannelMsgRequest{}
if err := server.DecodeMsg(msgData, msg); err != nil {
if err := b.Rpc.DecodeMsg(rpc.CodeTypeProto, msgData, msg); err != nil {
logger.Error(err)
resp.Code = treaty.CodeType_CodeFailed
resp.Msg = err.Error()
return server.Response(resp)
return b.Rpc.Response(rpc.CodeTypeProto, resp)
} else {
resp.Code = 0
resp.Msg = "success"
resp.MsgData = fmt.Sprintf("received msg:%v", msg.MsgData)
return server.Response(resp)
return b.Rpc.Response(rpc.CodeTypeProto, resp)
}
}
logger.Errorf("undfined message:%+v", req)
return nil
}

func (b *MyBackend) HandleBroadcastEvent(server rpc.ServerRpc, req *rpc.MsgRpc) []byte {
fmt.Printf("MyBackend HandleBroadcastEvent received: %+v \n", req)
func (b *MyBackend) HandleBroadcastEvent(req *rpc.MsgRpc) []byte {
logger.Infof("MyBackend HandleBroadcastEvent received: %+v \n", req)
return nil
}

func MyBackendCreator(s *treaty.Server) (rpc.ServerEntity, error) {
server := &MyBackend{
ServerBase: base.NewServerBase(s),
conns: make(map[int32]*treaty.Server),
}
server.SelfEventHandler = server.HandleSelfEvent
server.BroadcastEventHandler = server.HandleBroadcastEvent
return server, nil
}

func init() {
srv := &MyBackend{conns: make(map[int32]*treaty.Server)}
srv.SetServerId("backend_3001")
srv.RegEventHandlerSelf(srv.HandleSelfEvent)
srv.RegEventHandlerBroadcast(srv.HandleBroadcastEvent)
launch.RegisterServer(srv)
launch.RegisterCreator("backend", MyBackendCreator)
}
36 changes: 18 additions & 18 deletions examples/zinx_demo/balancer.go
Original file line number Diff line number Diff line change
@@ -1,37 +1,37 @@
package main

import (
"fmt"
"github.com/jqiris/kungfu/v2/logger"
"github.com/jqiris/kungfu/v2/rpc"
"github.com/jqiris/kungfu/v2/treaty"

"github.com/jqiris/kungfu/v2/balancer"
"github.com/jqiris/kungfu/v2/base"
"github.com/jqiris/kungfu/v2/launch"
)

type MyBalancer struct {
balancer.BaseBalancer
*base.ServerBalancer
}

func (b *MyBalancer) HandleSelfEvent(server rpc.ServerRpc, req *rpc.MsgRpc) []byte {
fmt.Printf("MyBalancer HandleSelfEvent received: %+v \n", req)
func (b *MyBalancer) HandleSelfEvent(req *rpc.MsgRpc) []byte {
logger.Infof("MyBalancer HandleSelfEvent received: %+v \n", req)
return nil
}

func (b *MyBalancer) HandleBroadcastEvent(server rpc.ServerRpc, req *rpc.MsgRpc) []byte {
fmt.Printf("MyBalancer HandleBroadcastEvent received: %+v \n", req)
func (b *MyBalancer) HandleBroadcastEvent(req *rpc.MsgRpc) []byte {
logger.Infof("MyBalancer HandleBroadcastEvent received: %+v \n", req)
return nil
}

func init() {
srv := &MyBalancer{}
srv.SetServerId("balancer_1001")
srv.RegEventHandlerSelf(srv.HandleSelfEvent)
srv.RegEventHandlerBroadcast(srv.HandleBroadcastEvent)
launch.RegisterServer(srv)
func MyBalancerCreator(s *treaty.Server) (rpc.ServerEntity, error) {
server := &MyBalancer{
ServerBalancer: base.NewServerBalancer(s),
}
server.SelfEventHandler = server.HandleSelfEvent
server.BroadcastEventHandler = server.HandleBroadcastEvent
return server, nil
}

srv2 := &MyBalancer{}
srv2.SetServerId("balancer_1002")
srv2.RegEventHandlerSelf(srv2.HandleSelfEvent)
srv2.RegEventHandlerBroadcast(srv2.HandleBroadcastEvent)
launch.RegisterServer(srv2)
func init() {
launch.RegisterCreator("balancer", MyBalancerCreator)
}
26 changes: 14 additions & 12 deletions examples/zinx_demo/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,17 @@ package main

import (
"fmt"
"github.com/jqiris/kungfu/v2/config"
"github.com/jqiris/kungfu/v2/packet/zinx"
"github.com/jqiris/kungfu/v2/serialize"
"github.com/jqiris/kungfu/v2/utils"
"io/ioutil"
"net"
"net/http"
"testing"

"github.com/jqiris/kungfu/v2/config"
"github.com/jqiris/kungfu/v2/packet/zinx"
"github.com/jqiris/kungfu/v2/serialize"
"github.com/jqiris/kungfu/v2/utils"

"github.com/jqiris/kungfu/v2/logger"
"github.com/jqiris/kungfu/v2/treaty"
)

Expand Down Expand Up @@ -49,24 +51,24 @@ func TestClientLogin(t *testing.T) {
logger.Fatal(err)
}
msg, _ := zinx.Encode(&zinx.Message{
int32(treaty.MsgId_Msg_Login_Request),
reqData,
Id: int32(treaty.MsgId_Msg_Login_Request),
Data: reqData,
})
_, err = conn.Write(msg)
if err != nil {
logger.Println("write error err ", err)
logger.Info("write error err ", err)
return
}
recMsg, err := zinx.ReadMsg(conn)
if err != nil {
fmt.Println("server unpack err:", err)
logger.Info("server unpack err:", err)
return
}

//解析data数据
respData := &treaty.LoginResponse{}
if err = coder.Unmarshal(recMsg.Data, respData); err != nil {
logger.Printf("login received err:%v", err)
logger.Infof("login received err:%v", err)
}
logger.Infof("login result is:%+v", respData)
//登录成功后尝试发送一次聊天数据
Expand All @@ -86,12 +88,12 @@ func TestClientLogin(t *testing.T) {
})
_, err = conn.Write(msg)
if err != nil {
logger.Println("write error err ", err)
logger.Info("write error err ", err)
return
}
recMsg, err = zinx.ReadMsg(conn)
if err != nil {
fmt.Println("server unpack err:", err)
logger.Info("server unpack err:", err)
return
}
logger.Infof("received chat resp:%+v", recMsg.Data)
Expand All @@ -101,5 +103,5 @@ func TestTokenCreate(t *testing.T) {
uid, nickname := 1001, "jason"
tokenkey := config.GetConnectorConf().TokenKey
token := utils.Md5(fmt.Sprintf("%d|%s|%s", uid, nickname, tokenkey))
fmt.Println(token)
logger.Info(token)
}
Loading

0 comments on commit 7f3a0b0

Please sign in to comment.