【问题标题】:Need to send information between Java application and webpage需要在 Java 应用程序和网页之间发送信息
【发布时间】:2015-06-03 22:23:44
【问题描述】:

我有一个在套接字上正常运行的多人游戏,但我有兴趣通过网页和 Javascript 添加旁观者视图(和聊天)。

我只需要每隔几秒向网页发送几个字节的信息,然后当然是与游戏服务器之间的聊天消息(他们必须登录才能发送消息)。

我可以使用 websocket 吗?它们与普通插座兼容吗?我还可以使用哪些其他方法? (我宁愿不使用数据库轮询)

【问题讨论】:

  • Websockets 与常规套接字不兼容。他们是一个非常不同的野兽。我建议您学习 java servlet 并使用 http 请求。

标签: java javascript sockets


【解决方案1】:

您可以在 Java 应用程序中使用httpserver 来共享信息。这很简单——只需几行代码。当然,您的计算机应该可以用于其他具有 Web 浏览器的计算机。

这是客户端到服务器的一种通信方式。如果您需要双向通信,您仍然需要遵守 http 规则(不是因为 Java,而是因为您使用浏览器作为客户端)。

这就是我所做的。在 JavaScript 开放连接中,它可以是任何东西 - AJAX、图像、新 JavaScript 动态对象的 JavaScript 源(这就是我所做的)。在服务器端打开但不要关闭连接 - 等到你有东西要发送。当你有它 - 发送它。浏览器将在此时拥有它。干净利落。但是,有必要的技巧:如果服务器等待很长时间(2 分钟),浏览器将关闭连接。在这种情况下,您的 JavaScript 应该准备就绪并再次发出相同的请求。并且它重复。在服务器端,您的连接将关闭,但会打开新的连接,并在您准备好时等待。还有一个技巧——当你从浏览器端发出新请求时——不要忘记缓存。要从缓存中获得相同的答案,请添加一些独特的请求。例如当前时间作为参数。

【讨论】:

  • 我知道我是如何从 Javascript 发送到 Java 的(使用 http 请求),但是反过来呢?我是否使用服务器发送的事件和一个正在进行的连接?我如何从 Java 中判断浏览器窗口是否已关闭以及我需要终止?
  • http 协议是无状态的并且可以中断,但是有很多技巧。我马上更新答案。
猜你喜欢
  • 1970-01-01
  • 2018-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多