Я хотел бы знать, как я могу сопоставить пользователей, которые подключаются, на основе их уникального идентификатора и сеанса идентификатора, так что, если для этого идентификатора более трех сеансов, пользователи, которые подключились первым, удаляются из хэш-карты и т. Д.Как добавить и удалить значения HashMap по порядку вставки?
Пример:
UserID:3 Session:1980002
UserID:3 Session:2841111
UserID:3 Session:84848
идентификатор пользователя уже содержит 3 активных сеансов, самый старый удаляется и KillSession вызывается, давая путь к новым.
UserID:3 Session:2841111
UserID:3 Session:84848
UserID:3 Session:4848880
Код:
public void onHTTPCupertinoStreamingSessionCreate(HTTPStreamerSessionCupertino httpSession) {
String User_Session = httpSession.getSessionId();
String Client_ID = httpSession.getProperties().getPropertyStr("sql_client_id");
/* Verifies that there are already 3 active sessions and removes the oldest,
since the limit of simultaneous sessions is 3 for each user,
and add to hashmap, Client_ID and User_Session */
}
public void onHTTPCupertinoStreamingSessionDestroy(IHTTPStreamerSession httpSession) {
String User_Session = httpSession.getSessionId();
//remove from hashmap, Client_ID based on session User_Session
}
public void KillSession(int SessionId){
IApplicationInstance Instance = applicationInstance;
IHTTPStreamerSession sessions = Instance.getHTTPStreamerSessions().get(SessionId);
sessions.rejectSession();
//remove from hashmap, Client_ID based on session User_Session
}
CLIENT_ID является идентификатор пользователя в базе данных, User_Session уникальная сессия в Wowza генерируется для каждого соединения, эта сессия не имеют одинаковые значения, то есть, если один и тот же Client_ID подключается более одного раза, это значение будет отличаться для каждого из ваших сеансов.
То есть, в основном, моя трудность заключается в установке хэш-карты, как я могу это сделать?
Я не понимаю. Является ли идентификатор пользователя ключом вашей карты (будь то «HashMap» или какой-либо другой тип)? Если это так, я предлагаю 'ArrayDeque' как значение карты. Если 'ArrayDeque' уже имеет размер 3, выньте первый сеанс и убейте его, а затем добавьте новый сеанс в конец. Вы можете просто использовать 'Queue ' для типа значения карты, но 'ArrayDeque ' для фактических экземпляров. –
«HashMap' или 'HashMap " не может сопоставляться с одного идентификатора пользователя на три идентификатора сеанса. Он может удерживать каждую клавишу только один раз и только одно значение для этого ключа. –