Javascript 用于可与数据库交互的java应用程序的HTML5WebSocket实现

Javascript 用于可与数据库交互的java应用程序的HTML5WebSocket实现,javascript,html,websocket,Javascript,Html,Websocket,我正在开发一个需要大量用户交互的应用程序。这是一种人们可以评论的讨论形式。目前,我们正在使用web服务,每次用户发表评论或回复评论时,我们都会调用web服务,它与数据库通信,并完成其余的工作。我发现这个过程相当缓慢。所以我在一些地方读到,web套接字可能是我问题的解决方案,我可以直接使用可用的API与数据库通信,使我的应用程序更快。 我搜索了很多,在一些在线可用的示例中,他们也在使用servlet,而在一些示例中,他们没有。这很令人困惑。我只想使用html5 WebSocket。UI代码是一个将

我正在开发一个需要大量用户交互的应用程序。这是一种人们可以评论的讨论形式。目前,我们正在使用web服务,每次用户发表评论或回复评论时,我们都会调用web服务,它与数据库通信,并完成其余的工作。我发现这个过程相当缓慢。所以我在一些地方读到,web套接字可能是我问题的解决方案,我可以直接使用可用的API与数据库通信,使我的应用程序更快。 我搜索了很多,在一些在线可用的示例中,他们也在使用servlet,而在一些示例中,他们没有。这很令人困惑。我只想使用html5 WebSocket。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(“不确定这里到底要用什么”);
//日志错误
connection.onerror=函数(错误){
log('WebSocket错误');
console.log(错误);
};
//记录来自服务器的消息
connection.onmessage=函数(e){
console.log('Server:'+e.data);
警报(“服务器说:”+e.data);
};
connection.onopen=函数(e){
日志(“连接打开…”);
}
connection.onclose=函数(e){
日志(“连接关闭…”);
}
}
函数sayHello(){
发送(document.getElementById(“msg”).value);
}
函数关闭(){
控制台日志(“关闭…”);
connection.close();
}

在创建新的WebSocket对象时,我需要提到的确切路径。我是否应该使用servlet。请给出关于后端java代码的想法。提前感谢

Servlet没有这样的支持。您应该使用JavaEE7的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) { ... }
   }
}
有关详细信息,请参见此处:

我对所有这些都是新手,如果我的java程序在某些包中,我不确定在发送消息时应该从javascript传递什么serverendpoint路径java EE7 websocket直接与javascript一起工作。例如,支持websocket的浏览器。为此,您需要阅读教程并运行教程中给出的示例。我不确定websockets是否会更快地发布新评论。据我所知,它使通常进行大量轮询的用户界面更具响应性(因此其他用户可以更快地看到帖子,而无需刷新其UI),但我不认为这篇文章会比使用web服务更快。在走这条路之前,你需要确定哪一条是慢的——你可能在这里解决了错误的问题