websockets socket org cliente java javascript tomcat websocket

org - Tomcat 7.0.50 implementación java websocket da error 404



web socket en java (3)

Lo he resuelto El problema fue muy específico para mi instalación. También instalé el websocket api .jar en el directorio WEB-INF / lib de mi aplicación. No estoy seguro de por qué lo estaba rompiendo. ¿Puedes aclarar la causa raíz de este comportamiento y por qué no funciona cuando le das a websocket-api.jar en WEB-INF / lib de la aplicación junto con lib de tomcat?

Estoy tratando de implementar un websocket en tomcat 7.0.50 usando puntos finales anotados como se especifica en Java Websocket API (1.0) - JSR 356. A continuación se encuentran los pasos breves de cómo lo he codificado 1) Escribir un punto final de websocket usando @ServerEndpoint anotación 2) implementar los métodos @onOpen y @onMessage 3) abrir un websocket usando javascript en google chrome.

Encuentre el código correspondiente a los pasos anteriores en orden

1) PASO 1 y 2: escribir el punto final del servidor websocket:

package com.jkweb.websocket; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.websocket.EndpointConfig; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.server.PathParam; import javax.websocket.server.ServerEndpoint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @ServerEndpoint(value="/websocket/fileuploadtracker") @OnOpen public void open(Session session,EndpointConfig config) { ...... } @OnMessage public void onMessage(Session session, String msg) { try { session.getBasicRemote().sendText(msg); } catch (IOException e) { logger.error(e.getMessage()); } } public static void sendMessage(String uniqueTocken,String msg){ try { Session wsSession = socketConnectionMap.get(uniqueTocken); wsSession.getBasicRemote().sendText(msg); } catch (IOException e) { logger.error(e.getMessage()); } }

}

2) PASO 3: abrir websocket usando javascript api en Chrome:

wsurl = "ws://localhost:8080/jkweb/websocket/fileuploadtracker", ws; ws = new WebSocket(wsurl); ws.onopen = function() { // Web Socket is connected, send data using send() ws.send("Sending first Message"); alert("Message is sent..."); }; ws.onmessage = function (evt) { var received_msg = evt.data; alert("Message is received..."); }; ws.onclose = function(evt) { // websocket is closed. alert("Connection is closed..."+evt.code + ":"+evt.reason ); };

Estoy usando las siguientes versiones de softwares: 1) Tomcat - 7.0.50 2) Java - 1.7.45 3) Servlet - 3.0 4) Han incluido la siguiente dependencia de Maven 5) Chrome - 32.0.1700.107m

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

Sin embargo, recibo un error de seguimiento y la conexión se cierra con el código de error 1066 en la consola de Chrome:

WebSocket connection to ''ws://localhost:8080/jkweb/websocket/fileuploadtracker'' failed: Error during WebSocket handshake: Unexpected response code: 404

¿Hay alguna configuración que me esté perdiendo? Traté de buscar mucho pero no pude encontrar nada. Por favor, necesito que esto se resuelva lo antes posible.


Si usó el servidor tomcat que se creó en eclipse, debe eliminar el servidor anterior y crear uno nuevo con tomcat 7.0.50. Esta es mi solución. PD: mi servidor Tomcat es 7.0.53, y el anterior es 7.0.21. Buena suerte para ti ~


También tuve el mismo problema. Intente eliminar los archivos jar no deseados que contienen websocket en su carpeta $ JAVA_HOME / lib. y luego agregar solo