【问题标题】:Html5 websocket implementation for a java application that can interact with database可以与数据库交互的Java应用程序的Html5 websocket实现
【发布时间】:2013-06-24 06:04:34
【问题描述】:

我正在开发一个需要大量用户交互的应用程序。它是一种人们可以发表评论的讨论形式。目前我们正在使用网络服务,每次用户发表评论或回复评论时,我们都在调用网络服务,它正在与数据库通信并完成其余的事情。我发现这个过程相当缓慢。所以我在几个地方读到网络套接字可能是我的问题的解决方案,我可以直接使用可用的 api 与数据库通信并使我的应用程序更快。 我搜索了很多,在一些在线可用的示例中,他们也使用了 servlet,而在某些示例中则没有。这非常令人困惑。我只想使用 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 对象时,我需要提到什么路径。我是否应该使用 servlet。请提供有关后端java代码的想法。提前致谢

【问题讨论】:

  • 我不确定 websockets 是否会使新 cmets 的发布更快。据我了解,它使通常进行大量轮询的用户界面更具响应性(因此其他用户会看到帖子更快且无需刷新用户界面),但我认为该帖子不会比使用网络服务更快。在沿着这条路线走之前,您需要确定哪个是慢位 - 您可能在这里解决了错误的问题

标签: javascript html websocket


【解决方案1】:

Servlet 没有这样的支持。您应该使用 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

【讨论】:

  • 我是新手,如果我的 java 程序在某个包中,我不确定在发送消息时应该从 javascript 传递什么服务器端点路径
  • Java EE7 websocket 直接与 JavaScript 一起工作。即支持 WebSocket 的浏览器。为此,您需要阅读教程并运行教程中给出的示例。
猜你喜欢
  • 2011-10-26
  • 1970-01-01
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 2013-11-06
  • 2020-08-16
  • 1970-01-01
  • 2011-11-24
相关资源
最近更新 更多