spring - 如何通过 Spring Webflux 中的 websockets 向特定客户端发送消息?
问题描述
我是春季 webflux 的新手。我想在春天实现 websocket 应用程序。有人可以帮我吗,我如何在所有连接的客户端中向特定客户端发送消息。
服务器代码
private void serverLogic(WebSocketSessionHandler sessionHandler, long interval)
{
sessionHandler
.connected()
.subscribe(session -> logger.info("Client Connected [{}]", session.getId()));
sessionHandler
.disconnected()
.subscribe(session -> logger.info("Client Disconnected [{}]", session.getId()));
Flux<String> receiveAll =
sessionHandler
.receive()
.subscribeOn(Schedulers.elastic())
.doOnNext(message -> logger.info("Server Received: [{}]", message));
Mono<String> receiveFirst =
sessionHandler
.receive()
.subscribeOn(Schedulers.elastic())
.next();
//This module is sending data to all the clients that are connected. How do I alter this one?
Flux<String> send =
Flux
.interval(Duration.ofMillis(interval))
.subscribeOn(Schedulers.elastic())
.takeUntil(value -> !sessionHandler.isConnected())
.map(value -> Long.toString(value))
.doOnNext(message -> sessionHandler.send(message))
.doOnNext(message -> logger.info("Server Sent: [{}]", message));
receiveAll.subscribe();
receiveFirst.thenMany(send).subscribe();
}
解决方案
推荐阅读
- r - 有没有办法用 fread 指定日期的格式?
- mysql - 在 SQL 中计算俱乐部成员资格
- html - 将来自 github 的原始 html 嵌入另一个网站
- godot - 我如何将其他类型的动作(状态效果、治疗、属性提升、派对切换)添加到基于回合的系统中
- swift - 在 SwiftUI 中点击 TextField 时出现键盘错误
- woocommerce - 如何翻译显示在前端的管理字符串输入 - Woocommerce Multiple Shipping 插件
- java - 如何修复 JPopupMenu 隐藏在边框的插图内?
- ms-media-foundation - IMFStreamSink::ProcessSample 未调用——自定义媒体接收器
- .htaccess - 如何使用 htaccess 从 URL 转发中排除单个文件类型
- reactjs - 无法在我的反应钩子组件中将表单键值附加到“formData”