Tomcat 9 и веб-розетка. Получил ошибку 404. Что не так в моем коде? - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь сделать свое первое простое приложение клиент-сервет с веб-сокетом и сервером tomcat 9. Я нашел этот пример в интернете. У меня была следующая ошибка:

(index):17 WebSocket connection to 'ws://localhost:8080/JavaWebSocket/ws' failed: 

Error during WebSocket handshake: Unexpected response code: 404"

вот эта строка:

var webSocket = new WebSocket("ws://localhost:8080/JavaWebSocket/ws")" 

Я думал, что инициализация должна быть

 var webSocket = new WebSocket("ws://localhost:8080/[nameOfTheClassWithWebSocket]/ws");

Но это тоже не работает :( Я попробовал все :( Я не могу решить эту проблему: (

Ниже приведены код Java и файл Jsp со схемой проекта.

Java-код:

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

@ServerEndpoint("/ws")
public class WebSocketServerExample {
@OnOpen
public void onOpen(){
    System.out.println("Open Connection ...");
}

@OnClose
public void onClose(){
    System.out.println("Close Connection ...");
}

@OnMessage
public String onMessage(String message){
    System.out.println("Message from the client: " + message);
    String echoMsg = "Echo from the server : " + message;
    return echoMsg;
}

@OnError
public void onError(Throwable e){
    e.printStackTrace();
}
}

jsp файл:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <meta charset="UTF-8">
  <title>Tomcat WebSocket</title>
</head>
<body>
<form>
  <input id="message" type="text">
  <input onclick="wsSendMessage();" value="Echo" type="button">
  <input onclick="wsCloseConnection();" value="Disconnect" type="button">
</form>
<br>
<textarea id="echoText" rows="5" cols="30"></textarea>
<script type="text/javascript">
    var webSocket = new WebSocket("ws://localhost:8080/JavaWebSocket/ws");
    var echoText = document.getElementById("echoText");
    echoText.value = "";
    var message = document.getElementById("message");
    webSocket.onopen = function(message){ wsOpen(message);};
    webSocket.onmessage = function(message){ wsGetMessage(message);};
    webSocket.onclose = function(message){ console.log(message);};
    webSocket.onerror = function(message){ console.log(message);};
    function wsOpen(message){
        echoText.value += "Connected ... \n";
    }
    function wsSendMessage(){
        webSocket.send(message.value);
        echoText.value += "Message sended to the server : " + message.value + "\n";
        message.value = "";
    }
    function wsCloseConnection(){
        webSocket.close();
    }
    function wsGetMessage(message){
        echoText.value += "Message received from to the server : " + message.data + "\n";
    }
    function wsClose(message){
        echoText.value += "Disconnect ... \n";
    }

    function wserror(message){
        echoText.value += "Error ... \n";
    }
</script>
</body>
</html>

Схема проекта

1 Ответ

0 голосов
/ 14 декабря 2018

Ваш URL будет var webSocket = new WebSocket ("ws: // localhost: [порт] / appcontext / ws") "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...