2013-11-20 9 views
13

मैं इस उदाहरण चलाएँ: ws://localhost/Tests/chat:WebSocket उदाहरण काम नहीं करेगा कोशिश

import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.websocket.OnClose; 
import javax.websocket.OnError; 
import javax.websocket.OnMessage; 
import javax.websocket.OnOpen; 
import javax.websocket.Session; 
import javax.websocket.server.ServerEndpoint; 

@ServerEndpoint(value = "/chat") 
public class ChatServer { 

    private static final Logger LOGGER = 
      Logger.getLogger(ChatServer.class.getName()); 

    @OnOpen 
    public void onOpen(Session session) { 
     LOGGER.log(Level.INFO, "New connection with client: {0}", 
       session.getId()); 
    } 

    @OnMessage 
    public String onMessage(String message, Session session) { 
     LOGGER.log(Level.INFO, "New message from Client [{0}]: {1}", 
       new Object[] {session.getId(), message}); 
     return "Server received [" + message + "]"; 
    } 

    @OnClose 
    public void onClose(Session session) { 
     LOGGER.log(Level.INFO, "Close connection for client: {0}", 
       session.getId()); 
    } 

    @OnError 
    public void onError(Throwable exception, Session session) { 
     LOGGER.log(Level.INFO, "Error for client: {0}", session.getId()); 
    } 
} 

मैं Tomcat 7.0.47 उपयोग करते हैं, मैं लिंक की जाँच करें। क्या मुझे इस वेबसाइट को पंजीकृत करने की आवश्यकता है या web.xml में कुछ चीज़ें जोड़ें? कोई विचार क्यों मेरे लिए काम नहीं कर रहा है?

+0

सर्वर लॉग फ़ाइल में कोई स्टैक ट्रेस/उत्पादित त्रुटि संदेश? जब आप कनेक्ट करने का प्रयास कर रहे हों तो ब्राउज़र क्या उत्पन्न करता है? (मान लीजिए कि आप क्लाइंट के रूप में ब्राउज़र का उपयोग कर रहे हैं ..) –

+0

सर्वर लॉग में कुछ भी नहीं है, ऐसा लगता है कि अनुरोध सर्वर तक नहीं पहुंचता है। परीक्षण के लिए मैं क्रोम ऐप 'एडवांस्ड रेस्ट क्लाइंट' का उपयोग करता हूं। – Nyger

+0

क्या आप कुछ और कोशिश कर सकते हैं? "एडवांस्ड रेस्ट क्लाइंट" वेबसॉकेट कनेक्शन का समर्थन नहीं करता है (मुझे लगता है कि उनके विवरण में नहीं)। Http://www.websocket.org/echo.html के रूप में कुछ आसान काम करना चाहिए। आप जावास्क्रिप्ट त्रुटि कंसोल भी खोल सकते हैं, जहां आम तौर पर संकेत दिया जाता है कि क्या गलत है (404, 500, अन्य कारण ..) –

उत्तर

13

मुझे टोमकैट 7.0.47 पर वेबसॉकेट एपीआई का उपयोग करने की कोशिश करने में एक ही समस्या थी। क्लाइंट साइड प्रदर्शित होने वाला त्रुटि संदेश कोई मदद नहीं था और मेरा सर्वर साइड एंडपॉइंट कभी नहीं बनाया जा रहा था।

बहुत बर्बाद समय के बाद मुझे पता चला कि यह javax.websocket-api के लिए निर्भरता निर्धारित करने के कारण था। मैं मेवेन का उपयोग कर रहा हूं जिसमें compile के रूप में डिफ़ॉल्ट दायरा है जो समस्याओं का कारण बनता है क्योंकि टोमकैट में websocket-api.jar इसके lib फ़ोल्डर में है। निर्भरता को provided पर सेट करना इसे हल किया गया।

<dependency> 
     <groupId>javax.websocket</groupId> 
     <artifactId>javax.websocket-api</artifactId> 
     <version>1.0</version> 
     <scope>provided</scope> 
    </dependency> 

आशा इस

यह भी ध्यान देने योग्य बात है कि अपाचे पीछे चल रहा है, तो आप mod_proxy_wstunnel की आवश्यकता होगी लायक है में मदद करता है और IIS का उपयोग करता है, तो आप पहले WebSockets का समर्थन नहीं करता कुछ भी रूप में संस्करण 8.0 की आवश्यकता होगी।

+1

' प्रदान किया गया' 2 घंटे चला गया ... – Jackson

+0

वास्तव में आपको धन्यवाद .. इस बात को खोजने के लिए मैंने 4 घंटे से अधिक समय बिताया – GPrathap

+0

मुझे यहां रिवर्स समस्या थी: मैंने निर्भरता को प्रारंभिक में प्रदान किया लेकिन बाकी के निर्देशांक गलत थे। मजेदार तथ्य, ' javax javaee-api 'भी संकलित करता है लेकिन काम नहीं करता है। 5 घंटे खो गए ... – Pascal

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