0
私はJavaのWebソケットと簡単なチャットをしていますが、これはうまくいかず、理由を理解できません。シンプルな書き込みログTomcatでWebソケットアプリケーションを起動するには?
Serverクラス:
@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
を持っています。私は私のプロジェクトで何かの部分(クラスまたはいくつかの設定ファイル)の十分ではないと思う。
使ったことがないように、すべてのクラスChatServer
マーク。私はこれが正常ではないと思う。私のプロジェクトでは何が欠けていますか?この問題を解決するのに役立ちます。ありがとうございました。
あると思いますか?これは、tomcatの名前です。実行/デバッグの設定、またはMavenプロジェクトのモジュール名などですか? – Pavel
平均プロジェクト名、あなたは単にページ名を挙げていましたが、localhost:8080には多くのプロジェクトがあり、インデックスページを含むプロジェクトを定義しています。 –
私はこのモジュール名のために/ web-base /を追加しましたが、jsコンソールにエラーが発生しました:chat.html:27 'ws:// localhost:8080/web-base/index'へのWebSocket接続に失敗しました:Error WebSocketハンドシェイク中:予期しない応答コード:404 – Pavel