2016-07-26 10 views
0

Hallo Leute!WebSocket-Verbindung zu ... fehlgeschlagen: Fehler beim WebSocket-Handshake: Unerwarteter Antwortcode: 200

Ich versuche eine Websocket-Verbindung zwischen Chrome Browser und Glassfish 4.1.1 Server zu erstellen. Und habe keinen Erfolg 4 Tage. Leider bekomme ich HTTP 200 Nachricht anstelle von 101

Chrome DevTool log:

"WebSocket connection to 'ws://DOMAIN_NAME:8080/serverendpointdemo/' failed: 
Error during WebSocket handshake: Unexpected response code: 200" 

Client-Seite Code:

var ws = new WebSocket ("ws://" + document.location.host + "/serverendpointdemo/"); 

Server-Side-Code:

package com.za.tutorial.websocket; 

import javax.websocket.OnClose; 
import javax.websocket.OnError; 
import javax.websocket.OnMessage; 
import javax.websocket.OnOpen; 
import javax.websocket.server.ServerEndpoint; 

@ServerEndpoint("/home/USER_NAME/glassfish4/glassfish/domains/domain1/applications/serverendpointdemo") 
public class ServerEndpointDemo { 
    @OnOpen 
    public void handleOpen() { 
     System.out.println("Client is now connected..."); 
    } 

    @OnMessage 
    public String handleMessage (String message) { 
     return null; 
    } 

    @OnClose 
    public void handleClose() { 
    } 

    @OnError 
    public void handleError (Throwable t) { 
     t.printStackTrace(); 
    } 
} 

Vielleicht Alles andere wird benötigt, um Ihnen in dieser Frage behilflich zu sein? Bitte helfen.

+0

ich es auf diese Weise gewonnen: Client-Seite Javascript-Code: var ws = new WebSocket ("ws: // DOMAIN_NAME: 8080/serverendpointdemo/serverendpointdemo"); Hilfreiche Links, wenn elseone es bekam: [link] (http://blog.martinandersson.com/making-a-java-ee-7-websocket-serverendpoint-class-discoverable/) [link] (https://glassfish.java.net/docs/4.0/error-message-reference.pdf) [link] (http://download.oracle.com/otn-pub/jcp/websocket-1_0-fr -eval-spec/JavaWebSocketAPI_1.0_Final.pdf? AuthParam = 1469574317_cf28b611d89626ae8c534e5f783409ca) – Rinat

+0

Es ist eine Funktion des Glassfish Servers. Wenn Ihre Anwendung in GlassFish mit dem contextroot mycontextroot in einem Webcontainer bereitgestellt wird, der den Port 8080 von localhost abhört, kann auf den WebSocket mit ws: // localhost: 8080/mycontextroot/hallo zugegriffen werden. Vollständiger Text: [link] (http://www.oracle.com/technetwork/articles/java/jsr356-1937161.html) – Rinat

Antwort

0

server: @ServerEndpoint (value = "/ ws") public class WebSocketConfig {

private String message = ""; 
private String to = ""; 
private String from = ""; 
private static final Set<Session> sessions = Collections.synchronizedSet(new HashSet<Session>()); 

@OnOpen 
public void onOpen(Session session, EndpointConfig econfig) throws IOException {   
    System.out.println("New Web Socket Connection created"); 
    session.getBasicRemote().sendText("onOpen new socket connection");    
} 

@OnClose 
public void onClose(Session session) {  
     sessions.remove(session); 
} 

@OnMessage 
public void onMessage(String message, Session session) throws IOException { 

} 

Client-Seite:

während eine Verbindung herstellen, um die ContextPath var ws angeben sollte = new WebSocket ("ws: //" + document.location.host + "/" + ihr-contextPathName + "/ serverendpointdemo /");

http: ws: // hostname: port/ContextPath/serverendpoint https: WSS: // hostname: port/ContextPath/serverendpoint

ex: ws: //document.location.host+ "/ WebsocketDemo/ws ";

+0

Fügen Sie einige Erklärung mit der Antwort für wie diese Antwort helfen OP bei der Behebung des aktuellen Problems –

Verwandte Themen