gpt4 book ai didi

Java Websockets + 事件监听器。这是正确的方法吗?

转载 作者:搜寻专家 更新时间:2023-10-31 23:17:32 25 4
gpt4 key购买 nike

我目前正在创建一个将使用 Websockets 的 Java Web 应用程序。服务器将是一个用 @ServerEndpoint 注释的 Java 类,称为 Server.java,客户端将是一个网络浏览器,所以我肯定会使用 Javascript 访问 Websocket 端点。

我需要一个 Websocket,因为我想在服务器发生变化时通知客户端。我们有一个名为 EventManager 的实用程序类,它管理子系统中发生的所有事件。我计划将 Server.java 注册为 EventManager 的依赖项,以便每当 EventManager 有新内容时,它都会通知所有依赖项发生了特定事件。

这是好的做法吗?我考虑过使用 AJAX/长轮询,但我相信需要观察服务器到客户端的行为。此外,我无法获取数据库中的事件,我必须依靠 EventManager 来通知我的 Websocket 端点。

我想要的示例场景:

  1. 客户端 A 连接到 Server.java

  2. 客户端 B 连接到 Server.java(此时,将有两个 Activity session )

  3. EventManager 检测事件并通知 Server.java 的所有实例。

  4. Server.java 向所有 Activity 的 Websocket session 发送一条消息。

  5. 浏览器使用 Javascript 检索通过 Websocket 发送的数据并显示它。

我被告知为此使用 Node.js,但我仍在插入 Java 实现,因为:

  1. 我完全没有使用 Node.js 的经验
  2. 我们的 EventManager 类很难转换成用于 Node.js 的 Javascript

最佳答案

它将按照您建议的方式工作。一些提示:

  • 从您的事件管理器中删除僵尸服务器 (Server.java)。
  • 这在单台服务器机器上运行良好,如果有更多服务器机器会怎样? Client AClient B 可能连接到不同的 http 进程。
  • 当客户端刷新页面时,您将失去连接
  • 您可以利用 ServerEndpoint 可以接收查询参数来传递状态这一事实。
  • 连接中断。记得实现保活。
  • 每个 websocket 只能有一个消息编码器/解码器。有道理,但在 @OnMessage 方法中需要一些 ifs。

这是一个sample implementation使用 websockets 的具有多个服务器的聊天服务器。

关于Java Websockets + 事件监听器。这是正确的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30043888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com