Rumah > Soal Jawab > teks badan
迷茫2017-04-18 10:38:26
Ini kira-kira perkara yang kami lakukan dalam projek kami:
Sama ada anda menulis struktur data anda sendiri atau menggunakan Jedis, mungkin terdapat struktur seperti Peta.
Buat Kacang untuk mewakili sesi, yang dipanggil Sesi buat masa ini.
Rujukan Saluran netty dalam Sesi.
Masukkan ke dalam redis apabila channelActive
.
Jika perlu, anda boleh menggunakan channel.id().asLongText()
atau channel.id().asShortText()
sebagai pengecam unik Sesi
@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
//可以将channel.id().asLongText()或channel.id().asShortText()作为Session的ID
Session session = Session.buildSession(ctx.channel());
//Session存入Redis
pushSession2Redis(session);
logger.info("终端连接:{}", session);
}
Session.java
import java.net.SocketAddress;
import io.netty.channel.Channel;
public class Session {
//Session的唯一标识
private String id;
//和Session相关的channel,通过它向客户端回送数据
private Channel channel = null;
//上次通信时间
private long lastCommunicateTimeStamp = 0l;
//快速构建一个新的Session
public static Session buildSession(Channel channel) {
Session session = new Session();
session.setChannel(channel);
//此处暂且使用netty生成的类似UUID的字符串,来标识一个session
session.setId(channel.id().asLongText());
session.setLastCommunicateTimeStamp(System.currentTimeMillis());
return session;
}
// getter,setter
}
public class SessionManager{
//将Session放入redis
public void pushSession2Redis(Session session){
//这里就不用我说了吧
//不知道你自己用的redis客户端是什么
//调用客户端(比如Jedis)的API把session放到你自己的数据结构不就行了
}
//从redis获取指定session
public Session findById(String sessionId){
return null;
}
}