1
This commit is contained in:
parent
d3e5a14871
commit
be5570cad9
@ -33,8 +33,8 @@ func (this *app) Init() {
|
||||
this.initCb()
|
||||
f5.GetSysLog().Info("%s start host:%s port:%d",
|
||||
this.GetPkgName(),
|
||||
mt.Table.HallCluster.GetIp(),
|
||||
mt.Table.HallCluster.GetListenPort())
|
||||
mt.Table.IMCluster.GetIp(),
|
||||
mt.Table.IMCluster.GetListenPort())
|
||||
}
|
||||
|
||||
func (this *app) UnInit() {
|
||||
@ -65,10 +65,6 @@ func (this *app) Update() {
|
||||
fallthrough
|
||||
case constant.PLAYER_HANDLER_ID:
|
||||
GetPlayerMgr().ProcessCMMsg(handler, hdr)
|
||||
case constant.ROOM_HANDLER_ID:
|
||||
fallthrough
|
||||
case constant.ROOM_MGR_HANDLER_ID:
|
||||
GetRoomMgr().ProcessCMMsg(handler, hdr)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -84,5 +80,5 @@ func (this *app) registerDataSources() {
|
||||
}
|
||||
|
||||
func (this *app) GetHttpListenPort() int32 {
|
||||
return mt.Table.HallCluster.GetHttpListenPort()
|
||||
return mt.Table.IMCluster.GetHttpListenPort()
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package common
|
||||
import (
|
||||
"net"
|
||||
"ss"
|
||||
"cs"
|
||||
"f5"
|
||||
|
||||
proto "github.com/golang/protobuf/proto"
|
||||
@ -12,3 +13,27 @@ type WspListener interface {
|
||||
ProcessSSMMsg(*ss.SsNetMsgHandler, *f5.MsgHdr)
|
||||
SendProxyMsg(net.Conn, uint16, proto.Message)
|
||||
}
|
||||
|
||||
type App interface {
|
||||
Run(func(), func())
|
||||
AddNetMsg(*f5.MsgHdr)
|
||||
}
|
||||
|
||||
type Player interface {
|
||||
GetAccountId() string
|
||||
GetSessionId() string
|
||||
GetName() string
|
||||
GetAvatarUrl() string
|
||||
GetHeroId() string
|
||||
GetHeadFrame() string
|
||||
GetPing() int32
|
||||
SendMsg(proto.Message)
|
||||
IsOnline() bool
|
||||
}
|
||||
|
||||
type PlayerMgr interface {
|
||||
ProcessCMMsg(*cs.CsNetMsgHandler, *f5.MsgHdr)
|
||||
GetPlayerBySocket(f5.WspCliConn) Player
|
||||
GetPlayerByAccountId(string) Player
|
||||
OnSocketClose(f5.WspCliConn)
|
||||
}
|
||||
|
@ -9,3 +9,140 @@ const (
|
||||
PLAYER_MGR_MODULE_IDX
|
||||
MAX_MODULE_IDX
|
||||
)
|
||||
|
||||
const (
|
||||
PLAYER_MGR_HANDLER_ID = 1
|
||||
PLAYER_HANDLER_ID = 2
|
||||
WSP_LISTENER_HANDLER_ID = 3
|
||||
)
|
||||
|
||||
const (
|
||||
MAX_PACKET_LEN = 1024 * 64
|
||||
)
|
||||
|
||||
const (
|
||||
GAME_DB = "gamedb"
|
||||
FRIEND_DB = "firenddb"
|
||||
GAME_ID = 206
|
||||
)
|
||||
|
||||
// im server chat
|
||||
const (
|
||||
kCCBegin = iota
|
||||
kCCWorld = 1
|
||||
kCCPrivate = 2
|
||||
kCCGuild = 3
|
||||
kCCTeam = 4
|
||||
kCCBigHorn = 5
|
||||
kCCLoopMsg = 6
|
||||
kCCEnd
|
||||
)
|
||||
|
||||
// im server friend
|
||||
const (
|
||||
MaxFriendMembers = 200
|
||||
MaxPendingFriendReqs = 20
|
||||
MaxBlockedMembers = 50
|
||||
SearchWord = 42 // 搜索关键字
|
||||
MaxSearchResults = 20 // 搜索结果20条
|
||||
|
||||
FriendshipStatusPending = 0 // 好友关系状态 等待中 pending
|
||||
FriendshipStatusOK = 1 // 好友关系状态 接受 ok
|
||||
FriendshipStatusReject = 2 // 好友关系状态 拒绝 reject
|
||||
FriendshipStatusDeleted = 3 // 好友关系状态 已删除 disband
|
||||
|
||||
BlacklistStatusDefault = 0 // 好友黑名单状态 是否已移除黑名单 默认0,添加进来 未移除
|
||||
BlacklistStatusIsRemoved = 1 // 好友黑名单状态 已移除黑名单
|
||||
|
||||
OnlineStatusOff = 0 // 在线状态 离线
|
||||
OnlineStatus = 1 // 在线状态 在线
|
||||
)
|
||||
|
||||
// im server guild
|
||||
const (
|
||||
RandomGuildCount = 10
|
||||
MaxMembers = 30
|
||||
MaxMembersViceLeader = 2
|
||||
MaxPendingReqs = 10
|
||||
DefaultLogs = 20
|
||||
LogTypeApprove = 1 // 公会日志类型, 批准加入
|
||||
LogTypeLeave = 2
|
||||
LogTypeDismiss = 3
|
||||
LogTypeChangeLevel = 4
|
||||
LogTypeDisband = 6
|
||||
GuildMemberLevelLeader = 1 // 成员等级, 会长
|
||||
GuildMemberLevelViceLeader = 20 // 成员等级, 副会长
|
||||
GuildMemberLevelElite = 30 // 成员等级, 精英
|
||||
GuildMemberLevelDefault = 40 // 成员等级, 普通成员
|
||||
JoinCondDefault = 0 // 加入条件 0 需要审批
|
||||
JoinCondFree = 1 // 加入条件 1 可直接加入
|
||||
JoinCondStar = 2 // 加入条件 2 满足星星条件
|
||||
|
||||
PendingReqIsJoinGuildStatusDefault = 0 // 等待验证请求状态, 0 等待审核
|
||||
PendingReqIsJoinGuildStatusJoined = 1 // 等待验证请求状态, 1 已加入
|
||||
PendingReqIsJoinGuildStatusReject = 2 // 等待验证请求状态, 2 拒绝
|
||||
PendingReqIsJoinGuildStatusDisband = 3 // 等待验证请求状态, 3 公会已解散
|
||||
|
||||
// Event Names
|
||||
EVENT_GUILD_CREATE = "event_guild_create"
|
||||
EVENT_GUILD_APPLY = "event_guild_apply"
|
||||
EVENT_GUILD_APPROVE = "event_guild_approve"
|
||||
EVENT_GUILD_REJECT = "event_guild_reject"
|
||||
EVENT_GUILD_JOIN = "event_guild_join"
|
||||
EVENT_GUILD_LEAVE = "event_guild_leave"
|
||||
EVENT_GUILD_DISMISS_MEMBER = "event_guild_dismiss_member"
|
||||
EVENT_GUILD_DISBAND = "event_guild_disband"
|
||||
EVENT_GUILD_SET_MEMBER_LEVEL = "event_guild_set_member_level"
|
||||
EVENT_GUILD_SET_NAME = "event_guild_set_name"
|
||||
EVENT_GUILD_SET_NOTICE = "event_guild_set_notice"
|
||||
|
||||
// Err code
|
||||
ERR_CODE_OK = 0
|
||||
|
||||
// Login and Reconnect
|
||||
ERR_CODE_RECONNECT_PLAYER_NO_EXISTS = 10001
|
||||
ERR_CODE_RECONNECT_PLAYER_SESSION_ID_NO_VALID = 10002
|
||||
|
||||
// Friemds
|
||||
ERR_CODE_USERS_NO_EXISTS = 11001
|
||||
ERR_CODE_FRIENDSHIP_IS_FULL = 11002
|
||||
ERR_CODE_PENDING_REQUEST_IS_FULL = 11003
|
||||
ERR_CODE_UPDATE_PENDING_REQUEST_DB_FAIL = 11004
|
||||
ERR_CODE_UPDATE_FRIENDSHIP_DB_FAIL = 11005
|
||||
ERR_CODE_UPDATE_BLACKLIST_DB_FAIL = 11006
|
||||
ERR_CODE_NO_IN_REQ = 11007
|
||||
ERR_CODE_USERS_IS_FULL = 11008
|
||||
ERR_CODE_USER_IN_BLACKLIST = 11009
|
||||
ERR_CODE_USER_NOT_IN_BLACKLIST = 11010
|
||||
ERR_CODE_BLACKLIST_FULL = 11011
|
||||
ERR_CODE_SEARCH_USERS_SIZE_FULL = 11012
|
||||
ERR_CODE_SEARCH_USERS_DB_FAIL = 11013
|
||||
ERR_CODE_SEARCH_USER_DB_RESULT_IS_NULL = 11014
|
||||
ERR_CODE_SEARCH_USER_DB_FAIL = 11015
|
||||
ERR_CODE_SEARCH_NO_RESULT = 11016
|
||||
ERR_CODE_FRIEND_NO_EXISTS = 11017
|
||||
ERR_CODE_ALREADY_FRIEND = 11018
|
||||
|
||||
// Guild
|
||||
ERR_CODE_GUILD_NO_EXISTS = 12001
|
||||
ERR_CODE_JOINED_GUILD = 12002
|
||||
ERR_CODE_CREATE_GUILD_FAIL = 12003
|
||||
ERR_CODE_APPLY_GUILD_FAIL = 12004
|
||||
ERR_CODE_GUILD_MEMBER_NO_EXISTS = 12005
|
||||
ERR_CODE_GUILD_MEMBER_FULL = 12006
|
||||
ERR_CODE_GUILD_PENDING_REQUEST_NO_EXISTS = 12007
|
||||
ERR_CODE_GUILD_NO_LEADER_PERM = 12008
|
||||
ERR_CODE_GUILD_BLOCKED_LEADER = 12009
|
||||
ERR_CODE_GUILD_OPERATOR_MEMBER_NO_PERM = 12010
|
||||
ERR_CODE_GUILD_DISMISS_MEMBER_NO_PERM = 12011
|
||||
ERR_CODE_CREATE_GUILD_DB_FAIL = 12013
|
||||
ERR_CODE_CREATE_GUILD_MEMBER_DB_FAIL = 12014
|
||||
ERR_CODE_UPDATE_GUILD_DB_FAIL = 12015
|
||||
ERR_CODE_UPDATE_GUILD_MEMBER_DB_FAIL = 12016
|
||||
ERR_CODE_UPDATE_GUILD_PENDING_REQUEST_DB_FAIL = 12017
|
||||
ERR_CODE_REQUEST_PARAMS_ERROR = 12018
|
||||
ERR_CODE_GUILD_SETMEMBERLEVEL_VICE_LEADER_MAX_LIMIT = 12019
|
||||
ERR_CODE_GUILD_DUPLICATE_NAME = 12020
|
||||
ERR_CODE_GUILD_API_ERROR = 12021
|
||||
ERR_CODE_GUILD_NAME_TOO_LONG = 12022
|
||||
)
|
||||
|
@ -17,14 +17,9 @@ var initOrders = []int32 {
|
||||
}
|
||||
|
||||
var app common.App
|
||||
var roomMgr common.RoomMgr
|
||||
var playerMgr common.PlayerMgr
|
||||
var wspListener common.WspListener
|
||||
|
||||
func GetRoomMgr() common.RoomMgr {
|
||||
return roomMgr
|
||||
}
|
||||
|
||||
func GetPlayerMgr() common.PlayerMgr {
|
||||
return playerMgr
|
||||
}
|
||||
@ -63,7 +58,6 @@ func RegModule(idx int32, m q5.Module) {
|
||||
}
|
||||
case constant.ROOMMGR_MODULE_IDX:
|
||||
{
|
||||
roomMgr = m.(common.RoomMgr)
|
||||
}
|
||||
default:
|
||||
{
|
||||
|
12
server/imserver_new/initialize/enter.go
Normal file
12
server/imserver_new/initialize/enter.go
Normal file
@ -0,0 +1,12 @@
|
||||
package initialize
|
||||
|
||||
import (
|
||||
_ "main/listener"
|
||||
_ "main/app"
|
||||
|
||||
. "main/global"
|
||||
)
|
||||
|
||||
func Init() {
|
||||
GetApp().Run(InitModules, UnInitModules)
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package main
|
||||
package listener
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
@ -11,6 +11,8 @@ import (
|
||||
"ss"
|
||||
|
||||
proto "github.com/golang/protobuf/proto"
|
||||
"main/constant"
|
||||
. "main/global"
|
||||
)
|
||||
|
||||
type WSPListener struct {
|
||||
@ -64,8 +66,8 @@ func (this *WSPListener) socketRead(conn net.Conn) {
|
||||
for {
|
||||
{
|
||||
readBytes := bufLen - alreadyReadBytes
|
||||
if readBytes > MAX_PACKET_LEN-recvBufLen {
|
||||
readBytes = MAX_PACKET_LEN - recvBufLen
|
||||
if readBytes > constant.MAX_PACKET_LEN-recvBufLen {
|
||||
readBytes = constant.MAX_PACKET_LEN - recvBufLen
|
||||
}
|
||||
|
||||
if readBytes > 0 {
|
||||
@ -90,7 +92,7 @@ func (this *WSPListener) socketRead(conn net.Conn) {
|
||||
copy(recvBuf[:], recvBuf[offset:])
|
||||
}
|
||||
recvBufLen -= offset
|
||||
if recvBufLen >= MAX_PACKET_LEN {
|
||||
if recvBufLen >= constant.MAX_PACKET_LEN {
|
||||
panic("recv max packet")
|
||||
}
|
||||
|
||||
@ -142,13 +144,13 @@ func (this *WSPListener) parseNetPkt() {
|
||||
hdr.Msg = ss.ParsePb(hdr.MsgId, hdr.Data)
|
||||
if hdr.Msg != nil {
|
||||
hdr.Entry.Init(hdr)
|
||||
app.addNetMsg(hdr)
|
||||
GetApp().AddNetMsg(hdr)
|
||||
}
|
||||
} else {
|
||||
hdr.Msg = cs.ParsePb(hdr.MsgId, hdr.Data)
|
||||
if hdr.Msg != nil {
|
||||
hdr.Entry.Init(hdr)
|
||||
app.addNetMsg(hdr)
|
||||
GetApp().AddNetMsg(hdr)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"f5"
|
||||
"main/initialize"
|
||||
)
|
||||
|
||||
func main() {
|
||||
f5.Run(app)
|
||||
initialize.Init()
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"github.com/golang/protobuf/proto"
|
||||
"q5"
|
||||
"sort"
|
||||
. "main/global"
|
||||
)
|
||||
|
||||
type Player struct {
|
||||
@ -29,7 +30,7 @@ func (p *Player) GetSessionId() string {
|
||||
}
|
||||
|
||||
func (p *Player) SendMsg(rspMsg proto.Message) {
|
||||
wspListener.sendProxyMsg(p.socket.Conn, p.socket.SocketHandle, rspMsg)
|
||||
GetWspListener().SendProxyMsg(p.socket.Conn, p.socket.SocketHandle, rspMsg)
|
||||
}
|
||||
|
||||
func (p *Player) ReBind(socket f5.WspCliConn) {
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
"github.com/golang/protobuf/proto"
|
||||
"mt"
|
||||
"q5"
|
||||
. "main/global"
|
||||
)
|
||||
|
||||
type PlayerMgr struct {
|
||||
@ -156,7 +157,7 @@ func (this *PlayerMgr) CMLoginResult(hdr *f5.MsgHdr, msg *cs.CMLogin, rsp f5.Htt
|
||||
rspMsg := &cs.SMLogin{}
|
||||
rspMsg.ServerInfo = serverInfo
|
||||
rspMsg.AccountId = &resObj.Info.AccountID
|
||||
wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg)
|
||||
GetWspListener().SendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg)
|
||||
}
|
||||
|
||||
func (this *PlayerMgr) reportServerState(masterIp string, masterPort int32) {
|
||||
@ -221,17 +222,17 @@ func (this *PlayerMgr) CMReconnect(hdr *f5.MsgHdr, msg *cs.CMReconnect) {
|
||||
if hum == nil {
|
||||
rspMsg.Errcode = proto.Int32(ERR_CODE_RECONNECT_PLAYER_NO_EXISTS)
|
||||
rspMsg.Errmsg = proto.String("player no exists")
|
||||
wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg)
|
||||
GetWspListener().SendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg)
|
||||
return
|
||||
}
|
||||
if hum.GetSessionId() != msg.GetSessionId() {
|
||||
rspMsg.Errcode = proto.Int32(ERR_CODE_RECONNECT_PLAYER_SESSION_ID_NO_VALID)
|
||||
rspMsg.Errmsg = proto.String("session_id no valid")
|
||||
wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg)
|
||||
GetWspListener().SendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg)
|
||||
return
|
||||
}
|
||||
hum.ReBind(hdr.GetSocket())
|
||||
wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg)
|
||||
GetWspListener().SendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg)
|
||||
}
|
||||
|
||||
// GetRemotePlayerInfo
|
||||
|
Loading…
x
Reference in New Issue
Block a user