53 lines
1.7 KiB
Lua
53 lines
1.7 KiB
Lua
local skynet = require "skynet"
|
|
local oo = require "Class"
|
|
local socket = require "skynet.socket"
|
|
local httpd = require "http.httpd"
|
|
local sockethelper = require "http.sockethelper"
|
|
local urllib = require "http.url"
|
|
local table = table
|
|
local string = string
|
|
local JSON =require "json"
|
|
local cmd = require "GameCmd"
|
|
local crypt = require "skynet.crypt"
|
|
local log = require "Log"
|
|
local pb = require "pb"
|
|
local errorInfo = require "ErrorInfo"
|
|
local serverId = tonumber(skynet.getenv "serverId")
|
|
|
|
local TcpServer = oo.class()
|
|
|
|
function TcpServer:Init()
|
|
|
|
end
|
|
|
|
function TcpServer:ClusterRecv( c2sData )
|
|
local s2cData = {}
|
|
s2cData.code = errorInfo.Suc
|
|
s2cData.desc = "Suc"
|
|
s2cData.cmd = pb.enum("MsgType","CMD_Init")
|
|
s2cData.data = assert(pb.encode("InitMsgData", {}))
|
|
local msgData = nil
|
|
if not c2sData.isConnect then
|
|
--断线
|
|
if skynet.server.clusterServer:IsGameServer( serverId ) then
|
|
skynet.server.gameServer:UserOffline( c2sData.socketId )
|
|
end
|
|
else
|
|
--反序列化,获取子数据
|
|
msgData = assert(pb.decode("C2SMsgData", c2sData.data))
|
|
c2sData.cmd = msgData.cmd
|
|
c2sData.data = msgData.data
|
|
if skynet.server.clusterServer:IsCenterServer( serverId ) then
|
|
skynet.server.centerServer:TcpRecv( c2sData , s2cData)
|
|
elseif skynet.server.clusterServer:IsGameServer( serverId ) then
|
|
skynet.server.gameServer:TcpRecv( c2sData , s2cData)
|
|
end
|
|
s2cData.desc = errorInfo.ErrorMsg[ s2cData.code ] or "暂无消息提示"
|
|
end
|
|
--序列化包
|
|
s2cData = assert(pb.encode("S2CMsgData", s2cData))
|
|
return s2cData
|
|
end
|
|
|
|
skynet.server.tcpServer = TcpServer
|
|
return TcpServer |