游戏服务器中,与平台的通信是必不可少的。
使用一个web中间层与两端通信,php脚本控制,简单易用,让游戏服务器专心干自己的事情。
1.php部分:
使用nel_message.php,与游戏服务器通信。
该结构提供与游戏服务器通信的基础工具,如通信基类CCallbackClient、消息类CMesssage。
代码位置:code\EVA\tools\server\www\login
class CLoginServiceWeb extends CCallbackClient
{
function login($userId, $token)
{
$msg = new CMessage;
$msg->setName("LG");
$msg->serialUint32($userId);
$msg->serialString($token);
return parent::sendMessage($msg);
}
}
2.C++部分:
与普通服务器间通信类似,这里使用的是CNelCallbackServerAdaptor
std::auto_ptr<ICallbackServerAdaptor> _CallbackServer;
void getCallbakArray(NLNET::TCallbackItem *&arrayPtr, uint32 &arraySize)
{
static NLNET::TCallbackItem callbackArray[] =
{
{ "LG", CLoginServiceWebItf::cb_WebLogin },
};
}
static void cb_WebLogin (NLNET::CMessage &message, NLNET::TSockId from, NLNET::CCallbackNetBase &netbase)
{
}
详见以下三个文件:
3.启动脚本
Module需要使用脚本启动,在相应服务器的配置文件中增加启动命令:
LSWebPort = 30001;
StartCommands =
{
// create the login service module and open the web interface
"moduleManager.createModule LoginService ls webPort="+LSWebPort,
};
至此,可实现 客户端->第三方平台->外网web服务器->内部服务器组 之间的消息传递。
传送门:http://blog.youkuaiyun.com/li9chuan/article/details/38387061