问题标签 [spring-websocket]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - spring websockets:向离线用户发送消息 - 消息未在消息代理中排队
我有一个使用消息代理(activemq)的带有spring和websockets的webapp。
这是我的配置类:
我有一个计划任务,不断向用户名“StanTheMan”推送消息:
目前,如果用户没有通过 websocket 连接到服务器 - 他的所有消息都没有为他排队,他们只是丢弃了。每当他连接时 -都会为他排队等待新消息。我是否可以以任何方式将消息“转换并发送到用户”给离线用户?我想将过期时间的消息排入队列,以便离线用户稍后在他们再次连接并且过期时间未结束时推送。
我怎样才能做到这一点?显然使用真正的消息代理(activemq)应该有助于实现这一目标,但是如何实现呢?
谢谢!
java - spring websockets - 是否可以向离线用户发送消息?
我的数据库中有很多用户。我希望能够通过 websockets 向他们发送消息,即使他们没有连接。每当我向离线用户发送消息时 - 我希望将消息排队等待他连接,然后将所有消息推送给他。
类似的东西:
这个功能甚至可能吗?
请记住,我使用 activeMQ 作为我的消息总线。(消息代理)。我上面描述的功能是 jms\message queues 中的标准
编辑:我用 activemq 创建了一个应用程序 - 当我向离线用户发送消息时,消息没有入队,它丢失了。有任何想法吗?
谢谢!
java - Junit和spring websockets - 每次测试后我都会遇到一个奇怪的异常
当我的 jUnit 测试结束时,我收到以下异常:
任何想法如何防止这种情况?
PS - 测试成功了,但我真的很讨厌看到堆栈跟踪
编辑 - 我的测试课:
}
这是我的代理配置文件:
spring - spring websocket SessionDisconnectEvent
我想检测断开连接的用户。我试着听SessionDisconnectEvent
,但eventPublisher
inStompSubProtocolHandler
总是空的,它永远不会发布。我正在使用 4.0.5
java - Spring 4 Websocket 支持和订阅所有主题的客户端
我目前正在考虑在 Spring 中使用新的 Websocket 支持来替换基于 Netty 构建的自定义服务器。我遇到的问题之一是让 spring 只向单个用户发送消息(基于会话)。
在此测试期间,似乎 websocket 客户端一旦通过身份验证,就可以订阅“/queue/ / ”并为其他用户获取消息。我们在 Eclipse RCP 应用程序中使用 spring websocket 客户端连接到 spring 服务器。
我在这里遗漏了什么,还是我们只是试图以一种非预期的方式使用它?
spring - Spring:@Scheduled 任务通过@Controller 和 Websocket 触发
我有一个@Scheduled
任务通过 websocket 每秒向客户端发送数据。
我的需要是仅在客户要求时才开始运行我的计划任务。
而不是,我的任务在我的服务器启动时开始。这不是我想要的行为。
目前,我有一个计划任务的 bean,它在我的 SchedulingConfigurer 中声明:
这是我的弹簧控制器代码:
也许用注释不可能做到这一点,@Scheduled
我必须使用TaskScheduler
界面?
javascript - 如何通过spring websocket向特定设备发送消息
我对 Spring websocket 相当陌生。我在下面有一个简单的演示:
HandshakeInterceptor 类:
}
WebsocketEndPoint 类:
}
Spring映射websocket:
html:
现在我想向特定用户发送消息。我定义每个设备都有一个 deviceId,所以我想知道:
- 如何与客户端发送的属性握手?
- 如何从客户端 javascript 发送握手属性?
- 如何通过握手属性将消息从服务器发送到客户端?
感谢您的关注。
angularjs - not updated template view -> it needs mous scroll, or clear input
I'm using angular.js with stomp-websockets,sock.js under by this tutorial http://g00glen00b.be/spring-websockets-angular/. I'm getting messages from websocket, but template view isn't refreshed after message from websocket is arrived. When I want to update template view I need to clear input box, or scroll with mouse.
ember.js - 为来自 Spring 后端的域实体提供实时更新的 Web 应用程序
在服务器端,我使用 Spring 4。在浏览器端,我使用 Ember.js。
我的应用程序具有实体类,例如Person
和Product
。这些实体在服务器和浏览器上都使用,并且建模相同。例如:
我需要在服务器和浏览器之间保持实体同步。因此,例如,当服务器端aPerson
的firstName
属性发生变化时,该变化应实时推送到所有感兴趣的浏览器。
我调查了Spring 的 WebSocket 支持,在熟悉了Spring 的“Hello WebSocket”示例之后,我确信使用这项技术是满足我需求的正确方法。
由于 WebSocket/STOMP 非常低级,我正在寻找一种基于该技术的解决方案,并在浏览器(这里的实体角色是观察者)和服务器(实体的角色)之间提供类似于观察者模式的行为这里将是主题/可观察的)。
由于我找不到这个“保持实体同步”挑战的现有解决方案(既不是 Spring 中的解决方案,也不是某些第三方库),我想构建自己的解决方案,但设计已经提出了有趣的问题, 如:
- 协议应该是什么样的?一旦发生变化,服务器是否应该发送一个最小的帧,只包括实体类型和它的 ID?(例如,一旦
Person
ID 为“3”的任何属性发生更改,然后发送{"type": "Person", "id": "3"}
给所有感兴趣的客户) - 可以订阅的实体数量是否存在现实限制?在一个会话期间,单个浏览器可能会接触到数百个
Product
s。
我有兴趣了解哪些解决方案已被证明可以成功地使基于 Spring 的服务器的实体与 JavaScript 客户端的代理实体(不一定是 Ember.js)保持同步。
spring - 为 Spring WebSocket @MessageMapping/@SubscribeMapping 使用自定义 JSON 序列化
这工作正常
在我的基于 Spring 的应用程序中,我设置了一个基于 HTTP 的 REST 端点。这个端点“说”JSON:
由于这些 JSON 有效负载必须遵循不寻常的命名约定,我使用了注释,例如@JsonRootName
和@JsonProperty
来自定义序列化的属性名称:
使用此自定义 JSON 元数据,/users/123
通过 HTTP 进行查询会返回以下 JSON 有效负载:
以下不按预期工作
现在我在玩 Spring 的 WebSocket 支持:我想创建一个基于 STOMP 的REST 端点。因此我创建了一个StompRestController
这样的:
我本来希望@SubscribeMapping
/@MessageMapping
遵循与@RequestMapping
. 但这种情况并非如此。相反,当查询这个 WebSocket/STOMP 端点时,@SubscribeMapping
/ @MessageMapping
-annotated 方法将导致向客户端发送 STOMP 消息,其有效负载/正文对应于“正常”杰克逊序列化规则,例如
所以:
- 如何让
@SubscribeMapping
/@MessageMapping
-annotated 方法遵循@JsonXXX
返回值的自定义注释? @JsonXXX
除了进行这种返回值序列化之外,还有其他方法吗?