gpt4 book ai didi

java - 如何使用tomcat启动网络套接字应用程序?

转载 作者:行者123 更新时间:2023-11-28 22:49:33 26 4
gpt4 key购买 nike

我与 Java 网络套接字进行了简单的聊天,但这不起作用,我不明白为什么。

简单写入日志的服务器类:

@ApplicationScoped
@ServerEndpoint(value = "/index")// May be this mapping but it's don't work.
public class ChatServer {
private static final Logger LOGGER =
Logger.getLogger(ChatServer.class.getName());

@OnOpen
public void onOpen(Session session) {
LOGGER.log(Level.INFO, "New connection with client: {0}",
session.getId());
}

@OnMessage
public String onMessage(String message, Session session) {
LOGGER.log(Level.INFO, "New message from Client [{0}]: {1}",
new Object[] {session.getId(), message});
return "Server received [" + message + "]";
}

@OnClose
public void onClose(Session session) {
LOGGER.log(Level.INFO, "Close connection for client: {0}",
session.getId());
}

@OnError
public void onError(Throwable exception, Session session) {
LOGGER.log(Level.INFO, "Error for client: {0}", session.getId());
}
}

我有一个简单的客户端:

<html>
<head>
<title>JEE7 WebSocket Example</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script>
var chatClient = new WebSocket("ws://localhost:8080/index");

chatClient.onmessage = function(evt) {
var p = document.createElement("p");
p.setAttribute("class", "server");
p.innerHTML = "Server: " + evt.data;
var container = document.getElementById("container");
container.appendChild(p);
};
function send() {
var input = document.getElementById("message");
var p = document.createElement("p");
p.setAttribute("class", "client");
p.innerHTML = "Me: " + input.value;
var container = document.getElementById("container");
container.appendChild(p);
chatClient.send(input.value);
input.value = "";
}
</script>
</head>
<body>
<h1>JEE7 WebSocket Example</h1>
<div id="container">

</div>
<input type="text" id="message" name="message" />
<button type="button" id="send" onclick="send()">Send</button>
</body>
</html>

但是当我启动 tomcat 时,我有代码 404。我认为在我的项目中某些部分(类或一些配置文件)还不够。

这是我的项目结构: enter image description here

所有类 ChatServer 标记为从未使用过。我认为这是不正常的。我的项目中缺少什么才能成功运行?帮我解决这个问题。谢谢。

最佳答案

你没有在 websocket 中提到 appname。

                                                    //here
var chatClient = new WebSocket("ws://localhost:8080/appname/index");

我认为这是你的错字

关于java - 如何使用tomcat启动网络套接字应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44813043/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com