ackage com.dbsun.config; import javax.servlet.http.HttpSession; import javax.websocket.HandshakeResponse; import javax.websocket.server.HandshakeRequest; import javax.websocket.server.ServerEndpointConfig; import javax.websocket.server.ServerEndpointConfig.Configurator; public class HttpSessionConfigurator extends Configurator { @Override public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) { HttpSession httpSession = (HttpSession) request.getHttpSession(); sec.getUserProperties().put(HttpSession.class.getName(), httpSession); } }
时间: 2023-06-18 22:02:54 浏览: 198
channel-v4.json+channel-v3.json
这段代码是一个 WebSocket 配置类,它的作用是将 HttpSession 绑定到 WebSocket 中,以便在 WebSocket 连接中可以获取到 HttpSession 中的信息。
在 WebSocket 连接时,它会被自动加载,然后调用 modifyHandshake 方法,将 HttpSession 对象存储在 WebSocket 的 userProperties 中,这样在后续的 WebSocket 连接中,就可以通过 getUserProperties 方法获取到 HttpSession 对象了。
该类需要在 WebSocket 类中进行配置,例如:
```
@ServerEndpoint(value = "/websocket", configurator = HttpSessionConfigurator.class)
public class WebSocketServer {
@OnOpen
public void onOpen(Session session, EndpointConfig config) {
HttpSession httpSession = (HttpSession) config.getUserProperties().get(HttpSession.class.getName());
// 在这里可以获取到 HttpSession 对象了
}
// 其他 WebSocket 方法
}
```
阅读全文