0

多くのユーザー操作を必要とするアプリケーションに取り組んでいます。人々がコメントできる一種のディスカッション フォームです。現在、私たちはWebサービスを使用しており、ユーザーがコメントを投稿したり、コメントに返信したりするたびに、Webサービスを呼び出し、データベースと通信して残りのことを行っています. このプロセスはかなり遅いことがわかりました。そのため、利用可能な API を直接使用してデータベースと通信し、アプリケーションを高速化できるという問題の解決策として、Web ソケットが役立つ可能性があることをいくつかの場所で読みました。オンラインで入手できるいくつかの例では、サーブレットも使用していて、使用していないものもありました。とても混乱しました。私はhtml5 websocketsを使いたいだけです。UI コードは、テキストをバックエンドに送信するページです。JS コードは次のとおりです。

<script>
var connection;



function connect() {
    console.log("connection");
    connection = new WebSocket("not sure what exactly to use here");
    // Log errors 
connection.onerror = function (error) {
  console.log('WebSocket Error ');
  console.log(error);

};

// Log messages from the server 
connection.onmessage = function (e) {
  console.log('Server: ' + e.data); 
  alert("Server said: " + e.data);
};

connection.onopen = function (e) {
console.log("Connection open...");
}

connection.onclose = function (e) {
console.log("Connection closed...");
}
}


function sayHello() {
    connection.send(document.getElementById("msg").value);
}

function close() {
    console.log("Closing...");
    connection.close();
}
</script>

新しい WebSocket オブジェクトを作成するときに、どのパスを正確に言及する必要がありますか。サーブレットを使用するかどうか。バックエンドの Java コードに関するアイデアを教えてください。前もって感謝します

4

1 に答える 1

1

サーブレットにはそのようなサポートがありません。Java EE 7 の WebSocket を使用する必要があります。コードは次のようになります。

@ServerEndpoint("/echo")
public class EchoEndpoint {
   @OnMessage
   public void onMessage(Session session, String msg) {
      try {
         session.getBasicRemote().sendText(msg);
         //Save message here into database 
      } catch (IOException e) { ... }
   }
}

詳細については、こちらを参照してください: http://docs.oracle.com/javaee/7/tutorial/doc/websocket004.htm

于 2013-06-24T06:10:20.577 に答える