Сохранение состояния на канале Нетти

StackOverflow https://stackoverflow.com/questions/8377319

  •  28-10-2019
  •  | 
  •  

Вопрос

Есть ли способ сохранить состояние на канале. Я пишу сервер чата и хочу сохранить информацию о пользователе, которому принадлежит канал. Я думал, что, может быть, канал предоставит метод хранения пользовательского объекта, но я не вижу его. Есть ли способ сделать это без необходимости что -то вроде карты?

Это было полезно?

Решение

1) Вы можете установить информацию о состоянии в Channelhandlercontext, как ниже, и использовать ее позже.

   channelHandlerContext.setAttachment(yourObj);

   Object yourObj2 = channelHandlerContext.getAttachment();

2) Создайте там канал локальный и хранилище информации там (канал Local похож на локальный поток для конкретного канала)

import org.jboss.netty.channel.ChannelLocal;

import java.util.Map;

public class UserInfoHolder {
     public final static ChannelLocal<Map<String, String>> USER_INFO = new     ChannelLocal<Map<String, String>>();
}


 //if you have the channel reference, you can store and retrieve information like this
 Map<String,String> userMap = ....

 //store
 UserInfoHolder.USER_INFO.set(channel, userMap);

 //retrive
 Map<String,String> userMap2 = UserInfoHolder.USER_INFO.get(channel);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top