@Override
    public void requestDestroyed(final ServletRequestEvent sre) {
        try {
            HttpServletRequest request = (HttpServletRequest) sre.getServletRequest();
            if (Objects.nonNull(request) && Objects.nonNull(request.getSession())) {
                HttpSession session = request.getSession();
                request.removeAttribute(CLIENT_IP_NAME);
                session.removeAttribute(CLIENT_IP_NAME);
            }
        } catch (Exception e) {
            LOG.error("request destroyed error", e);
        }
    }
@Test
    public void testRequestDestroyed() {
        ServletRequestEvent sre = mock(ServletRequestEvent.class);
        HttpServletRequest request = mock(HttpServletRequest.class);
        HttpSession session = mock(HttpSession.class);
        when(sre.getServletRequest()).thenReturn(request);
        when(request.getSession()).thenReturn(session);
        websocketListener.requestDestroyed(sre);
        verify(request).removeAttribute(CLIENT_IP_NAME);
        verify(session).removeAttribute(CLIENT_IP_NAME);
    }