gpt4 book ai didi

java - 高效的 Websocket 数据处理

转载 作者:行者123 更新时间:2023-12-02 06:11:36 28 4
gpt4 key购买 nike

我正在使用 HTML5 创建在线游戏。我将使用 JSON 字符串通过 Websockets 通信数据,因此典型的字符串将包含被调用的操作以及随之而来的数据:

{action: "chat", user: <cookie>, message: "Hello, Java!"}

服务器端将解析 JSON 字符串,然后执行 Case 语句,将数据发送到与指定操作匹配的方法:

switch (message.action) {
case "chat":
// send message
break;
}

问题是,一旦我完成,将会有大约 20-30 个操作,而 Case/Switch 语句在这方面看起来确实效率低下且困惑。是否有更有效的方法通过 WebSocket 处理客户端-服务器通信?有人建议构建 TCP 数据包并发送它们。我不知道如何在 JavaScript 中做到这一点。

最佳答案

有两种模式可以帮助您。

第一个Publisher/Subscriber pattern 。这将允许您定义特定事件的订阅者。

第二个Strategy pattern 。这种模式将为您提供一种构造消息处理程序的方法,而不会陷入大型 if-else 级联或大型 switch-case 语句。

您可以创建订阅特定事件子集的对象。在这些订阅者内部,您可以创建处理每个特定事件的策略。

该解决方案具有可扩展性和可维护性,您可以添加新订阅者并为每个订阅者添加新策略,而无需进行大的修改。此外,策略和订阅者可以进行统一测试。

例如,您可以拥有与游戏玩法相关的游戏事件和聊天事件。在服务器端,您将创建一个发布者对象,该对象从 websocket 连接获取事件,然后您将创建一个处理聊天事件的订阅者,以及一个处理实际游戏事件的订阅者。在聊天订阅者内部,您可以创建不同的策略来处理消息,例如“chat.start”、“chat.message”、“chat.close”等...您可以稍后添加新事件类型的策略,或者轻松订阅新功能。

关于java - 高效的 Websocket 数据处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21831124/

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