Tomcat 9和websocket。出现404错误。我的代码有什么问题?

时间:2018-11-09 21:59:57

标签: java tomcat websocket

我想制作我的第一个带有Web套接字和tomcat 9服务器的简单客户端托管应用程序。我在enternet中找到了这个示例。我遇到了下一个错误:

(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>

Scheme of the Project

1 个答案:

答案 0 :(得分:0)

您的网址将是 var webSocket = new WebSocket(“ ws:// localhost:[端口] / appcontext / ws”)“