Я создаю конечную точку сервера Java Websocket. Когда мой клиент подключается к конечной точке, он удерживает память, но при отключении он не освобождает память. Из-за какой причины это происходит? Я также поставил код для конечной точки сервера. Пожалуйста, предложите мне решение
Я использую пружину и javax.websocket.
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import javax.websocket.EncodeException;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.server.standard.SpringConfigurator;
@Component
@Scope(scopeName = "singleton")
@ServerEndpoint(value = "/chatLoad/{user}", configurator = SpringConfigurator.class, decoders = { MessageDecoder.class }, encoders = { MessageEncoder.class})
public class ServerEndpointLoad {
// List Of Connected Users
Map<String, Session> chatEndpoints = new ConcurrentHashMap<String, Session>();
@OnOpen
public void onOpen(Session session, @PathParam("user") String user) throws IOException, EncodeException, Exception {
System.out.println(this);
System.out.println("connected : " + user);
chatEndpoints.put(user, session);
}
@OnClose
public void onClose(Session session, @PathParam("user") String user) throws EncodeException, IOException {
System.out.println(this);
chatEndpoints.get(user).close();
chatEndpoints.remove(user);
session.close();
System.out.println("session : " + session);
System.out.println("disconnected : " + user);
}
@OnError
public void onError(Session session, Throwable throwable) {
throwable.printStackTrace();
}
@OnMessage
public void onMessage(Session session, Message message) throws Exception {
}
}