Spring 5 的反应式 WebSockets - 如何获取初始消息

2024-04-12

我遵循了该教程(特别是浏览器 WebSocket 客户端的部分):http://www.baeldung.com/spring-5-reactive-websockets http://www.baeldung.com/spring-5-reactive-websockets一切正常。

我想更进一步,让我的处理程序根据客户端发送的参数进行操作。连接时,客户端发送一条消息(“event-me-from-browser”):

var clientWebSocket = new WebSocket("ws://localhost:8080/event-emitter");
clientWebSocket.onopen = function() {
    console.log("clientWebSocket.onopen", clientWebSocket);
    console.log("clientWebSocket.readyState", "websocketstatus");
    clientWebSocket.send("event-me-from-browser");
}

我尝试在服务器端(java)检索该消息:

@Override
public Mono<Void> handle(WebSocketSession webSocketSession) {

   webSocketSession.receive().handle((pWebSocketMessage, pSynchronousSink) -> System.out.println(pWebSocketMessage.getPayloadAsText()));

   return webSocketSession.send(Flux.fromStream(Stream.generate(() -> getData()))
         .delayElements(Duration.ofMillis(50))
         .map(webSocketSession::textMessage))
         .and(webSocketSession.receive()
               .map(WebSocketMessage::getPayloadAsText)
               .log());
}

但这不起作用。

任何想法?我做错了什么?


排除 tomcat 依赖(并使用 netty 代替)将起作用:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <!-- Exclude the Tomcat dependency -->
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring 5 的反应式 WebSockets - 如何获取初始消息 的相关文章

随机推荐

  • Firestore 规则:resource.data.keys() 不包含读取中的所有字段

    设置 我在 Firebase Firestore 中有一个集合 其中包含以下字段 active created description displayName expires image type uid userName where ex
  • 什么是谓词调度

    我最近看到很多关于 Clojure 中谓词分派的讨论 想知道这件事是否有什么意义 换句话说 什么是谓词分派以及它与泛型函数 OOP 多态性和模式有何不同 谢谢 谓词分派包含泛型函数 OOP 多态性 模式匹配等 一个好的概述是谓词调度 统一的
  • Coldfusion onCFCRequest 将 XML 的返回类型更改为 WDDX

    我的客户群终于不再使用 Coldfusion 8 所以现在我可以利用 Coldfusion 9Application cfc gt onCFCRequest事件 我有一个测试场景设置 但结果不是我所期望的 我有一个我调用的方法 它会产生一个
  • AngularJS 角度种子启动项目添加指令

    我正在尝试使用角度种子项目 https github com angular angular seed https github com angular angular seed 开始一个新项目 我正在尝试添加一个新指令 创建了 testD
  • PyQt4 中的多列(可能使用 QTreeWidget)

    我正在尝试让 QTreeWidget 的工作方式与此完全相同 在Python中 我不关心多个选项卡 而是关心多个列 这就是我到目前为止所得到的 我不知道如何拥有多个标题 self pointListBox QtGui QTreeWidget
  • Visual Studio 2010 的替代 unistd.h 头文件

    我正在编译代码Visual Studio 2010其中包括头文件unistd h 由于windows不支持头文件unistd h 我正在寻找替代头文件 或者有什么方法可以自定义它 以便我也可以在 Visual Studio 中编译它 尝试包
  • 与构造函数同名的方法 - 为什么?

    为什么允许以下内容 public class Foo public Foo public void Foo 将方法命名为与类相同的名称是否有正当理由 我的猜测是 它是被允许的 因为明确禁止它会给 Java 的标识符命名规则添加另一个要求 但
  • 如何检查 Windows 应用商店应用程序中是否存在文件?

    还有其他方法可以检查 Windows 应用商店应用程序中是否存在文件吗 try var file await ApplicationData Current LocalFolder GetFileAsync Test xml no exce
  • if 块内 std::lock_guard 的范围

    目前正在研究关于std mutex并希望得到一些帮助 如果我有一个看起来像这样的代码 if returnBoolValue std lock guard
  • 页面刷新后如何保持div隐藏?

    我有一个简单的显示和隐藏 div 该 div 在加载页面时自动加载 然后您可以通过单击关闭来关闭该 div 一旦刷新页面 div 就会再次显示 我如何将其编码为一旦关闭 就不会再打开一个月 提前致谢 Ben 这是我到目前为止的代码
  • 在 0.19 中将自定义 HTML 与 elmreactor 或其他开发服务器结合使用

    As 这个答案 https stackoverflow com a 41366859 7943564显示可以在 Elm 0 18 中运行elm reactor如果此代码段包含在 HTML 文件中 则使用自定义 HTML 文件 然而 在 0
  • 验证 Android 应用链接失败并出现错误 1024

    我有一个带有 applicationId 的 Android 应用程序com unibeam passkey1 At https unibeam github io well known assetlinks json 我存储了以下文件 r
  • 在 Scala 中处理 monad 时出错?尝试与验证

    scalaz Validation据说比Trymonad 因为它会累积错误 有没有什么场合你可以选择Try over scalaz Validation or scalaz 支持的最重要论据Try是它在标准库中 这也是used在标准库中 例
  • Gradle 依赖项导致错误“无效的幻数”

    我在 GitHub 上有一个项目 我在家里的办公室都在做这个项目 大约两个月来 两台机器都运行良好 然后两周前 它停止在我的家用电脑上运行 但是在我的工作电脑上仍然可以正常工作 这是我得到的错误 app shrinkDebugMultiDe
  • Swift CloudKit SaveRecord“保存记录时出错”

    我正在尝试将记录保存到 CloudKit 但收到错误 我在其他地方看到这是一个需要知道如何保存的问题 但我无法让它发挥作用 var database CKDatabase CKContainer defaultContainer publi
  • 以编程方式更改 UITableView 的大小

    我正在尝试显示服务器上 mysql 数据库中的数据 我正在将数据加载到表中 问题是 我不希望这些数据成为视图上的唯一内容 我希望该表与其他内容共享 理想情况下 我希望表格能够随着单元格的数量而增长和扩展 因此 如果有 3 个单元格 我希望它
  • 如果处理后台消息,firebase_messaging flutter 插件会在启动时崩溃

    我综合了firebase messaging v5 1 6 https pub dev packages firebase messaging使用我的 flutter 应用程序 如自述文件中提到的 处理后台消息 选项 这是我的文件的外观 我
  • 使用 intelliJ 将字符串串联重构为 StringBuilder

    我被指定对一个项目进行重构 我遇到了这种情况 this path DESTINY deploy name FILE SEPARATOR delivery getSystem getCode FILE SEPARATOR delivery g
  • 求 a^b^c^... mod m

    我想计算一下 abcd mod m 你知道有什么有效的方法吗 因为这个数字太大了 但 a b c 和 m 适合一个简单的 32 位 int 有任何想法吗 Caveat This question is different from find
  • Spring 5 的反应式 WebSockets - 如何获取初始消息

    我遵循了该教程 特别是浏览器 WebSocket 客户端的部分 http www baeldung com spring 5 reactive websockets http www baeldung com spring 5 reacti