gpt4 book ai didi

java - 子协议(protocol)的 Websocket ServerEndpoint 实例

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:33 24 4
gpt4 key购买 nike

基于 this question我想基于协商的子协议(protocol)创建一个服务器端点实例,以不同方式处理各种协议(protocol)消息。不幸的是 ServerEndpointConfig.Configurator.getEndpointInstance [ docs ] 不会让我访问任何相关 session 数据来获取协商的子协议(protocol),因此我可以实例化不同的类。

public static class ServerEndpointConfigurator extends
ServerEndpointConfig.Configurator {

public ServerEndpointConfigurator()
{
}

@Override
public void modifyHandshake(ServerEndpointConfig config, HandshakeRequest request, HandshakeResponse response) {
// useful to work with session data in endpoint instance but not at getEndpointInstance
HttpSession httpSession = (HttpSession) request.getHttpSession();
config.getUserProperties().put(HttpSession.class.getName(), httpSession);
}

@Override
public <T> T getEndpointInstance(Class<T> endpointClass) throws InstantiationException {

// TODO get negotiated subprotocol and instantiate endpoint using switch case or factory

return (T) new WebSocketControllerA();

// or return (T) new WebSocketControllerB();
// or return (T) new WebSocketControllerC();
// ...
}
}

知道如何解决这个问题,或者是否有任何被广泛接受的做法来处理不同的子协议(protocol)?我很难在 Web 上找到有关子协议(protocol)处理的示例实现或高级文档。

最佳答案

这是您要找的吗?

@ServerEndpoint("/ws")
public class MyWebSocket {

@OnOpen
public void onOpen(Session session) {
session.getNegotiatedSubprotocol();
}

关于java - 子协议(protocol)的 Websocket ServerEndpoint 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41678578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com