This commit is contained in:
aozhiwei 2020-06-23 19:45:56 +08:00
parent 1afd961b73
commit c7281f28a8
6 changed files with 72 additions and 3 deletions

View File

@ -54,6 +54,10 @@ void HandlerMgr::RegisterNetMsgHandlers()
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_FriendAgreeRequest);
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_FriendDeleteRequest);
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_FriendApply);
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_OnUserOnline);
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_OnUserOffline);
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_QueryUserOnlineState);
RegisterNetMsgHandler(&imcmsghandler, &PlayerMgr::_SS_IM_PushUserOnlineState);
RegisterNetMsgHandler(&wsmsghandler, &WSListener::_SS_Ping);

View File

@ -687,12 +687,25 @@ void Player::FillApplyList(const cs::MFPaging& paging, cs::SMFriendApplyList& re
void Player::NotifyOnline()
{
{
ss::SS_IM_OnUserOnline msg;
msg.add_account_ids(AccountId());
SendSSMsg(myself, msg);
}
{
ss::SS_IM_QueryUserOnlineState msg;
for (auto& pair : friend_hash_) {
msg.add_account_ids(pair.second->base_data.account_id);
}
SendSSMsg(myself, msg);
}
}
void Player::NotifyOffline()
{
ss::SS_IM_OnUserOffline msg;
msg.add_account_ids(AccountId());
SendSSMsg(myself, msg);
}
void Player::OnDataVersion1Change()

View File

@ -81,6 +81,26 @@ void PlayerMgr::_SS_IM_FriendApply(f8::MsgHdr& hdr, const ss::SS_IM_FriendApply&
}
}
void PlayerMgr::_SS_IM_OnUserOnline(f8::MsgHdr& hdr, const ss::SS_IM_OnUserOnline& msg)
{
}
void PlayerMgr::_SS_IM_OnUserOffline(f8::MsgHdr& hdr, const ss::SS_IM_OnUserOffline& msg)
{
}
void PlayerMgr::_SS_IM_QueryUserOnlineState(f8::MsgHdr& hdr, const ss::SS_IM_QueryUserOnlineState& msg)
{
}
void PlayerMgr::_SS_IM_PushUserOnlineState(f8::MsgHdr& hdr, const ss::SS_IM_PushUserOnlineState& msg)
{
}
void PlayerMgr::_SS_IM_UpdateUserInfo(f8::MsgHdr& hdr, const ss::SS_IM_UpdateUserInfo& msg)
{
auto itr = watch_players_.find(msg.user_info().base_data().account_id());
@ -390,12 +410,12 @@ void PlayerMgr::AsyncLoginOnOk(const std::string& account_id,
hum->myself.base_data.online = true;
hum->myself.base_data.last_login_time = App::Instance()->nowtime;
hum->role_data.session_id = session_id;
hum->Init();
{
ss::MFUserDB user_db;
user_db.ParseFromString(friend_data);
hum->Deserialize(user_db);
}
hum->Init();
socket_hash_[hdr->socket_handle] = hum;
accountid_hash_[account_id] = hum;
GameLog::Instance()->Login(hum);

View File

@ -15,6 +15,10 @@ namespace ss
class SS_IM_FriendAgreeRequest;
class SS_IM_FriendDeleteRequest;
class SS_IM_FriendApply;
class SS_IM_OnUserOnline;
class SS_IM_OnUserOffline;
class SS_IM_QueryUserOnlineState;
class SS_IM_PushUserOnlineState;
}
class Player;
@ -38,6 +42,10 @@ class PlayerMgr : public a8::Singleton<PlayerMgr>
void _SS_IM_FriendAgreeRequest(f8::MsgHdr& hdr, const ss::SS_IM_FriendAgreeRequest& msg);
void _SS_IM_FriendDeleteRequest(f8::MsgHdr& hdr, const ss::SS_IM_FriendDeleteRequest& msg);
void _SS_IM_FriendApply(f8::MsgHdr& hdr, const ss::SS_IM_FriendApply& msg);
void _SS_IM_OnUserOnline(f8::MsgHdr& hdr, const ss::SS_IM_OnUserOnline& msg);
void _SS_IM_OnUserOffline(f8::MsgHdr& hdr, const ss::SS_IM_OnUserOffline& msg);
void _SS_IM_QueryUserOnlineState(f8::MsgHdr& hdr, const ss::SS_IM_QueryUserOnlineState& msg);
void _SS_IM_PushUserOnlineState(f8::MsgHdr& hdr, const ss::SS_IM_PushUserOnlineState& msg);
void _SS_IM_UpdateUserInfo(f8::MsgHdr& hdr, const ss::SS_IM_UpdateUserInfo& msg);

View File

@ -35,4 +35,8 @@ enum SSMessageId_e
_SS_IM_FriendDeleteRequest = 1018;
_SS_IM_FriendDeleteResponse = 1019;
_SS_IM_FriendApply = 1020;
_SS_IM_QueryUserOnlineState = 1021;
_SS_IM_PushUserOnlineState = 1022;
_SS_IM_OnUserOnline = 1023;
_SS_IM_OnUserOffline = 1024;
}

View File

@ -234,3 +234,23 @@ message SS_IM_FriendApply
optional MFIMMsgConext context = 1;
optional string target_id = 3;
}
message SS_IM_QueryUserOnlineState
{
repeated string account_ids = 3;
}
message SS_IM_PushUserOnlineState
{
repeated string online_account_ids = 3;
}
message SS_IM_OnUserOnline
{
repeated string account_ids = 3;
}
message SS_IM_OnUserOffline
{
repeated string account_ids = 3;
}