1
This commit is contained in:
parent
d3e5a14871
commit
be5570cad9
@ -33,8 +33,8 @@ func (this *app) Init() {
|
|||||||
this.initCb()
|
this.initCb()
|
||||||
f5.GetSysLog().Info("%s start host:%s port:%d",
|
f5.GetSysLog().Info("%s start host:%s port:%d",
|
||||||
this.GetPkgName(),
|
this.GetPkgName(),
|
||||||
mt.Table.HallCluster.GetIp(),
|
mt.Table.IMCluster.GetIp(),
|
||||||
mt.Table.HallCluster.GetListenPort())
|
mt.Table.IMCluster.GetListenPort())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *app) UnInit() {
|
func (this *app) UnInit() {
|
||||||
@ -65,10 +65,6 @@ func (this *app) Update() {
|
|||||||
fallthrough
|
fallthrough
|
||||||
case constant.PLAYER_HANDLER_ID:
|
case constant.PLAYER_HANDLER_ID:
|
||||||
GetPlayerMgr().ProcessCMMsg(handler, hdr)
|
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 {
|
func (this *app) GetHttpListenPort() int32 {
|
||||||
return mt.Table.HallCluster.GetHttpListenPort()
|
return mt.Table.IMCluster.GetHttpListenPort()
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package common
|
|||||||
import (
|
import (
|
||||||
"net"
|
"net"
|
||||||
"ss"
|
"ss"
|
||||||
|
"cs"
|
||||||
"f5"
|
"f5"
|
||||||
|
|
||||||
proto "github.com/golang/protobuf/proto"
|
proto "github.com/golang/protobuf/proto"
|
||||||
@ -12,3 +13,27 @@ type WspListener interface {
|
|||||||
ProcessSSMMsg(*ss.SsNetMsgHandler, *f5.MsgHdr)
|
ProcessSSMMsg(*ss.SsNetMsgHandler, *f5.MsgHdr)
|
||||||
SendProxyMsg(net.Conn, uint16, proto.Message)
|
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
|
PLAYER_MGR_MODULE_IDX
|
||||||
MAX_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 app common.App
|
||||||
var roomMgr common.RoomMgr
|
|
||||||
var playerMgr common.PlayerMgr
|
var playerMgr common.PlayerMgr
|
||||||
var wspListener common.WspListener
|
var wspListener common.WspListener
|
||||||
|
|
||||||
func GetRoomMgr() common.RoomMgr {
|
|
||||||
return roomMgr
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetPlayerMgr() common.PlayerMgr {
|
func GetPlayerMgr() common.PlayerMgr {
|
||||||
return playerMgr
|
return playerMgr
|
||||||
}
|
}
|
||||||
@ -63,7 +58,6 @@ func RegModule(idx int32, m q5.Module) {
|
|||||||
}
|
}
|
||||||
case constant.ROOMMGR_MODULE_IDX:
|
case constant.ROOMMGR_MODULE_IDX:
|
||||||
{
|
{
|
||||||
roomMgr = m.(common.RoomMgr)
|
|
||||||
}
|
}
|
||||||
default:
|
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 (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -11,6 +11,8 @@ import (
|
|||||||
"ss"
|
"ss"
|
||||||
|
|
||||||
proto "github.com/golang/protobuf/proto"
|
proto "github.com/golang/protobuf/proto"
|
||||||
|
"main/constant"
|
||||||
|
. "main/global"
|
||||||
)
|
)
|
||||||
|
|
||||||
type WSPListener struct {
|
type WSPListener struct {
|
||||||
@ -64,8 +66,8 @@ func (this *WSPListener) socketRead(conn net.Conn) {
|
|||||||
for {
|
for {
|
||||||
{
|
{
|
||||||
readBytes := bufLen - alreadyReadBytes
|
readBytes := bufLen - alreadyReadBytes
|
||||||
if readBytes > MAX_PACKET_LEN-recvBufLen {
|
if readBytes > constant.MAX_PACKET_LEN-recvBufLen {
|
||||||
readBytes = MAX_PACKET_LEN - recvBufLen
|
readBytes = constant.MAX_PACKET_LEN - recvBufLen
|
||||||
}
|
}
|
||||||
|
|
||||||
if readBytes > 0 {
|
if readBytes > 0 {
|
||||||
@ -90,7 +92,7 @@ func (this *WSPListener) socketRead(conn net.Conn) {
|
|||||||
copy(recvBuf[:], recvBuf[offset:])
|
copy(recvBuf[:], recvBuf[offset:])
|
||||||
}
|
}
|
||||||
recvBufLen -= offset
|
recvBufLen -= offset
|
||||||
if recvBufLen >= MAX_PACKET_LEN {
|
if recvBufLen >= constant.MAX_PACKET_LEN {
|
||||||
panic("recv max packet")
|
panic("recv max packet")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,13 +144,13 @@ func (this *WSPListener) parseNetPkt() {
|
|||||||
hdr.Msg = ss.ParsePb(hdr.MsgId, hdr.Data)
|
hdr.Msg = ss.ParsePb(hdr.MsgId, hdr.Data)
|
||||||
if hdr.Msg != nil {
|
if hdr.Msg != nil {
|
||||||
hdr.Entry.Init(hdr)
|
hdr.Entry.Init(hdr)
|
||||||
app.addNetMsg(hdr)
|
GetApp().AddNetMsg(hdr)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
hdr.Msg = cs.ParsePb(hdr.MsgId, hdr.Data)
|
hdr.Msg = cs.ParsePb(hdr.MsgId, hdr.Data)
|
||||||
if hdr.Msg != nil {
|
if hdr.Msg != nil {
|
||||||
hdr.Entry.Init(hdr)
|
hdr.Entry.Init(hdr)
|
||||||
app.addNetMsg(hdr)
|
GetApp().AddNetMsg(hdr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"f5"
|
"main/initialize"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
f5.Run(app)
|
initialize.Init()
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
"q5"
|
"q5"
|
||||||
"sort"
|
"sort"
|
||||||
|
. "main/global"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Player struct {
|
type Player struct {
|
||||||
@ -29,7 +30,7 @@ func (p *Player) GetSessionId() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *Player) SendMsg(rspMsg proto.Message) {
|
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) {
|
func (p *Player) ReBind(socket f5.WspCliConn) {
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
"mt"
|
"mt"
|
||||||
"q5"
|
"q5"
|
||||||
|
. "main/global"
|
||||||
)
|
)
|
||||||
|
|
||||||
type PlayerMgr struct {
|
type PlayerMgr struct {
|
||||||
@ -156,7 +157,7 @@ func (this *PlayerMgr) CMLoginResult(hdr *f5.MsgHdr, msg *cs.CMLogin, rsp f5.Htt
|
|||||||
rspMsg := &cs.SMLogin{}
|
rspMsg := &cs.SMLogin{}
|
||||||
rspMsg.ServerInfo = serverInfo
|
rspMsg.ServerInfo = serverInfo
|
||||||
rspMsg.AccountId = &resObj.Info.AccountID
|
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) {
|
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 {
|
if hum == nil {
|
||||||
rspMsg.Errcode = proto.Int32(ERR_CODE_RECONNECT_PLAYER_NO_EXISTS)
|
rspMsg.Errcode = proto.Int32(ERR_CODE_RECONNECT_PLAYER_NO_EXISTS)
|
||||||
rspMsg.Errmsg = proto.String("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
|
return
|
||||||
}
|
}
|
||||||
if hum.GetSessionId() != msg.GetSessionId() {
|
if hum.GetSessionId() != msg.GetSessionId() {
|
||||||
rspMsg.Errcode = proto.Int32(ERR_CODE_RECONNECT_PLAYER_SESSION_ID_NO_VALID)
|
rspMsg.Errcode = proto.Int32(ERR_CODE_RECONNECT_PLAYER_SESSION_ID_NO_VALID)
|
||||||
rspMsg.Errmsg = proto.String("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
|
return
|
||||||
}
|
}
|
||||||
hum.ReBind(hdr.GetSocket())
|
hum.ReBind(hdr.GetSocket())
|
||||||
wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg)
|
GetWspListener().SendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetRemotePlayerInfo
|
// GetRemotePlayerInfo
|
||||||
|
Loading…
x
Reference in New Issue
Block a user