Java Web Socket на Tomcat 9 - некоторые проблемы - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь реализовать Java Web Socket на локальном хосте, используя Tomcat 9. Я следую примеру по следующей ссылке:

https://examples.javacodegeeks.com/enterprise-java/tomcat/apache-tomcat-websocket-tutorial/#comments

Мне удалось запустить интеграцию с сервером Tomcat 9 в Eclipse, но когда я запускаю программу веб-сокета Java на сервере Tomcat, я получаю следующее:

HTTP-статус 404 - не найден

Тип отчета о состоянии

Сообщение /WebSocketServerExample/WEB-INF/classes/server/ws/WsServer.java

Описание Исходный сервер не нашел текущего представления для целевого ресурса или не хочет раскрывать, что он существует.

Apache Tomcat / 9.0.16

вот мой код (скопировать / вставить из примера)

Код сервера:

package server.ws;

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

@ServerEndpoint("/websocketendpoint")


public class WsServer {

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

}

Код клиента:

<!DOCTYPE html>
<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/WebSocketServerExample/websocketendpoint");
        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){ wsClose(message);};
        webSocket.onerror = function(message){ wsError(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>

Клиент работает, но не может подключиться к серверу.

Чего мне не хватает?

...