在 AzerothCore 中,authserver 是处理身份验证逻辑的服务器,worldserver 是处理游戏世界逻辑的服务器,而 client 则是玩家与服务器之间进行通信的客户端。它们之间的关系可以通过以下代码示例理解:
void WorldSession::HandleAuthSession() {
//...
m_authSocket->Connect(this, LogonCMSGAuthSession, boost::bind(&WorldSession::HandleAuthSessionResponse, this, _1));
//...
}
void WorldSession::HandleAuthSessionResponse(std::shared_ptr authResponse) {
//...
}
void AuthSocket::HandleData(std::shared_ptr buffer) {
//...
switch (packetOpCode) {
//...
case LogonSMSGAuthChallenge:
HandleAuthChallenge(buffer);
break;
//...
}
//...
}
void AuthSocket::HandleAuthChallenge(std::shared_ptr buffer) {
//...
AuthSessionResponse authResponse(/* ... */);
SendPacket(&authResponse);
//...
}
void WorldSession::HandleCharEnum() {
//...
m_worldSocket->Connect(iter->addr, iter->port, this, RealmCMSGRequestCharacters, boost::bind(&WorldSession::HandleCharEnumResult, this, _1));
//...
}
void WorldSession::HandleCharEnumResult(std::shared_ptr buffer) {
//...
}
void WorldSocket::HandleData(std::shared_ptr buffer) {
//...
switch (packetOpCode) {
//...
case WorldCMSGPlayerLogin:
HandlePlayerLogin(buffer);
break;
//...
}
//...
}
void WorldSocket::HandlePlayerLogin(std::shared_ptr buffer) {
//...
WorldSession* pSession = WorldSession::Get