我正在研究 servlet Http和WebSocket服务器,我想知道为客户实现会话ID的最佳方法是什么。
我想在客户端将id设置为cookie并将其保存在服务器端的内存中,因为这是我常见的。
但是,让我们说客户端A 向服务器发出第一个请求,A从服务器接收其会话ID,让我们称之为 A_SESSION 为了清楚起见。 此时,服务器知道A_SESSION标识客户端A.
让我们说客户端A有不良意图,一旦收到会话ID就会设置一堆变量并通过服务器提供的某些API填充数据,然后清除会话 id又发出新会话的另一个请求,在服务器将在内存中设置大量无用的变量之前很久就不会为空并且可以&# 39;垃圾收集。
Map<String,Object>
中,其中地图的每个键都是会话ID而对象是数据(可能是另一个Map<>
或JsonObject
?)。我没有发布任何代码,因为它很长,而且我怀疑它与问题有关,这更像是一个政策问题,而不是编码问题。
但我仍然认为我应该提供更多上下文,并让您知道我可以访问哪种客户信息。
当我说我没有使用任何外部库时,我的意思是我没有使用除核心Java之外的任何库。
我直接使用ServerSocket和Socket对象管理http连接,比如
ServerSocket ss = new ServerSocket();
ss.bind(new InetSocketAddress(bindAddress, port));
init();
while(true){
new HttpEventListener(ss.accept()).start();
}
和HttpEventListener
是我基本管理客户的地方。
我有客户&#39; ip地址,请求标头和ofc我可以将每个连接标识为Socket
。