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