使用 Dropwizard 0.7.0 实现长轮询服务器

2023-12-08

我正在尝试使用 Dropwizard 0.7.0 框架实现长轮询服务器。有人建议我使用码头集成。经过一番谷歌搜索后,我对 websockets、jetty continuation、cometd 之类的东西感到非常困惑。

我的问题是,这些东西是什么?我应该选择哪一个?任何例子都非常感激!


Edited

我们的服务器有很多客户端,包括移动设备(ios、android)、PC 和 Web。 websocket只能在浏览器中使用吗?


Websocket 在您列出的所有客户端中均可用。 通常,像 Atmoshpphere 这样的框架会处理降级到其他类型的传输(例如,长轮询而不是 Websocket)并为您抽象出差异。 Websockets 是长轮询试图解决的问题的标准 - 即服务器端推送。

我已经在 J​​etty 上为 Dropwizard 0.7.0 完成了 websockets - 但请阅读我在 DW google 组中链接到的线程。

See http://www.eclipse.org/jetty/documentation/9.0.6.v20130930/websockets.html and https://groups.google.com/d/msg/dropwizard-user/doNCx_35urk/5PIvd8_NHIcJ

基本上,您将一个 websocket-servlet 添加到 DW 来协商 websocket 会话:

final ServletRegistration.Dynamic websocket = environment.servlets().addServlet(
            "websocket",
            new MyWebSocketServlet(
                    environment.getObjectMapper(), 
                    environment.metrics(),
                    configuration.getKafkaConfig()
            )
    );
    websocket.setAsyncSupported(true);
    websocket.addMapping("/websocket/*");

以及 websocket servlet:

public class MyWebSocketServlet extends WebSocketServlet{

  @Override
  public void configure(WebSocketServletFactory factory) {
    factory.register(MyWebSocketEndpoint.class);
  }
}

最后是您的端点,它由 jetty websocket 库实例化:

@WebSocket
public class MyWebSocketEndpoint {

    @OnWebSocketMessage
    public void onMessage(Session session, String s) throws IOException {
        session.getRemote().sendString("Returned; "+s);
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Dropwizard 0.7.0 实现长轮询服务器 的相关文章

  • 在 Java 中连接和使用 Cassandra

    我已经阅读了一些关于 Cassandra 是什么以及它可以做什么的教程 但我的问题是如何在 Java 中与 Cassandra 交互 教程会很好 如果可能的话 有人可以告诉我是否应该使用 Thrift 还是 Hector 哪一个更好以及为什
  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • socket.io 的良好初学者教程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 为什么 websocket 需要使用 HTTP 进行打开握手?为什么不能成为一个独立的协议呢?

    Websocket 的设计方式是 通过使其握手成为有效的 HTTP 升级请求 其服务器可以与 HTTP 服务器共享端口 我对这个设计理念存有疑问 无论如何 WebSocket 协议都是一个独立的基于 TCP 的协议 为什么我们需要这个 HT
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • 如何在 javadoc 中使用“<”和“>”而不进行格式化?

    如果我写
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O

随机推荐

  • Zend Framework 2 过滤/验证内容数组

    如何将过滤器应用于包含数组内容的字段元素 例如 this gt add name gt tags type gt text filter gt array array name gt StripTags array name gt Stri
  • 如何将值从一个 JLabel 传输到另一个 JLabel?

    我有这个计算器 但我不知道如何获取其中的值resultpane单击 完成 按钮时到第一个文本框 我是 Java 新手 我已经尝试这样做 但我一直收到错误 import java awt BorderLayout import java aw
  • My SQL 错误:连接尝试失败,因为连接方未正确响应

    我在第三方服务器中有一个 MySQL 数据库 我正在尝试使用 Dreamweaver 中的 PHP 从本地计算机访问它 但是 我收到以下错误 MySQL 错误 2002 连接尝试失败 因为连接方未正确响应 一段时间后 或建立连接失败 因为连
  • 如何在 XSL 中用空格替换逗号

    我需要在 XML 输出中将所有其他逗号替换为空格 现在 我的纬度和经度如下所示 0 52437106918239 0 391509433962264 0 533805031446541 0 430817610062893 0 0 54795
  • 使用 PackageManager 不会在 Android 11 上填充应用列表

    我正在使用包管理器来获取启动器中应用程序抽屉界面的应用程序列表 一切正常 但在 Android 11 上 唯一显示的应用程序是 Android 设置应用程序 是什么改变了它不再工作和 或我应该做什么才能使它工作 应用程序列表现在基于用户配置
  • 从 pandas DataFrame 中的日期时间列中提取月份

    我有一个从 Excel 读取的 DataFrame 其中包含 DateTime 类型的列之一 sales data pandas read excel r Sample Sales Data xlsx 我能够使用 str extract l
  • 将列向量转换为 R 中矩阵的对角线?

    我在 R 中有一个具有以下格式的列向量 num 1 2464 1 我想对向量进行对角线排列 因此每个元素都位于矩阵的对角线中 我尝试过以下代码 diagvector lt diag myvector 但随后它只显示第一个数字 我想我只能使用
  • 使用不同节点运行 SKActions 序列

    我知道我可以创建一个 SKAction sequence 它将一一运行一个节点的操作 但是 如果我想用不同的节点执行序列 我该怎么做呢 我想做这样的事情 从节点 A 运行操作 等待 2 秒 从节点 B 运行操作 如果两个节点的名称是唯一的并
  • DestroyWindow 不会使用 Python 和 OpenCV 关闭 Mac 上的窗口

    我的程序使用以下代码生成一系列窗口 def display img name fun global clicked cv NamedWindow name 1 cv ShowImage name img cv SetMouseCallbac
  • z3 对于没有量词的断言生成未知

    我有一些简单的约束 涉及 z3 中实数的乘法 这些约束产生unknown 问题似乎是它们被包装在数据类型中 因为未包装的版本会产生sat 这是一个简化的情况 declare datatypes T NUM n Real declare co
  • 限制可以上传的文件数量

    如何限制可以上传的文件数量 The max验证似乎适用于图像的大小 以千字节为单位 如何验证允许上传的最大文件数 例如 单个输入只能上传 10 个文件 我在 Laravel 7 x 中的表现如何 使用以下命令创建一个新的表单请求类 php
  • 需要替代的 Python 列表反向解决方案

    我今天参加了一个工作面试 在此期间 我被要求写下一个反转列表的算法 首先我使用reverse 方法提供了答案 x 1 2 3 4 5 y reversed x for i in y print i 进行面试的高级开发人员问我是否知道另一种方
  • 如何在 C# 中以编程方式将 xlsx 文件转换为 2003 xls 文件?

    我找到了Excel包 一个比 Excel Interop API 更好的库 用于以编程方式创建和维护 Excel 工作表 但它们是在 xlsx 中生成的 大多数看到这些文件的人只安装了 Office 2003 因此我需要在我的 C 代码中将
  • 如何将“Mon Jun 18 00:00:00 IST 2012”转换为 18/06/2012?

    我有一个像下面这样的值Mon Jun 18 00 00 00 IST 2012我想将其转换为18 06 2012 如何转换这个 我尝试过这个方法 public String toDate Date date SimpleDateFormat
  • 上传到 FTP 时保留图像创建日期

    因此 我正在为我的家人制作一个网站 我们可以在其中上传图像并查看它们 但该网站的一个重要功能是按日期排序 以便例如我的阿姨在我母亲的生日时拍了照片 而我也有拍摄照片 我们上传图像 它们将添加到同一相册等 我意识到通过浏览器上传时无法保留日期
  • jqGrid - 在网格中不提供数据消息?

    如果当前搜索没有返回数据 我们将使用loadComplete回调向用户打印一条消息 表明没有数据 有没有办法配置 jqGrid 以在网格内打印出 无数据 消息 目前我们将其打印在div在网格上方 但希望它位于实际网格内 jqGrid 显示
  • Apache AGE-如何实现两个图之间的关系

    如果我们有 2 个图数据库 A 和 B 并且当前节点 A 图数据库和 B 图数据库之间没有关系 现在我必须在 A 节点和 B 节点之间添加关系 那么如何我使用 AGE 来做到这一点 例如 A 可以是员工图数据库 B 可以是任何汽车经销商图数
  • 按词汇顺序查找总和为给定数字的千组

    较大的数字可以采用逗号格式 以便更容易地分为三个一组 例如 1050 1 050 and 10200 10 200 每三组的总和为 1050 1 050 gives 1 50 51 10200 10 200 gives 10 200 210
  • 创建像 TextLine 这样的 Scalding Source,将多个文件组合到单个映射器中

    我们有许多小文件需要合并 在烫伤中你可以使用TextLine将文件作为文本行读取 问题是我们有 1 个映射器per file 但我们想要合并多个文件 以便它们由 1 个映射器处理 我知道我们需要将输入格式更改为实现CombineFileIn
  • 使用 Dropwizard 0.7.0 实现长轮询服务器

    我正在尝试使用 Dropwizard 0 7 0 框架实现长轮询服务器 有人建议我使用码头集成 经过一番谷歌搜索后 我对 websockets jetty continuation cometd 之类的东西感到非常困惑 我的问题是 这些东西