2017-01-16 10 views
13

द्वारा वेबसाइटसेट सर्वर एंडपॉइंट उदाहरण this question के आधार पर मैं विभिन्न प्रोटोकॉल संदेशों को अलग-अलग संभालने के लिए बातचीत किए गए सबप्रोटोकॉल के आधार पर एक सर्वर एंडपॉइंट उदाहरण बनाना चाहता हूं। दुर्भाग्यवश ServerEndpointConfig.Configurator.getEndpointInstance [docs] बातचीत किए गए सबप्रोटोल प्राप्त करने के लिए मुझे किसी भी प्रासंगिक सत्र डेटा तक पहुंचने नहीं देगा, इसलिए मैं विभिन्न वर्गों को तुरंत चालू कर सकता हूं।सबस्कॉटोकॉल

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(); 
     // ... 
    } 
} 

किसी भी विचार कैसे इस समस्या को हल या वहाँ किसी भी व्यापक रूप से स्वीकृत प्रथाओं कैसे अलग subprotocols को संभालने के लिए कर रहे हैं के लिए? मुझे वेब पर सबप्रोटोकॉल हैंडलिंग के बारे में उदाहरण कार्यान्वयन या उन्नत दस्तावेज़ीकरण खोजने में कठिनाई हो रही है।

उत्तर

0

क्या आप यह देख रहे हैं?

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

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

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^