问题标签 [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.

0 投票
1 回答
466 浏览

spring - websockets、spring 4和tomcat 7没有这样的方法问题

嗨,我在 websockets 和 spring 4 和 tomcat 7 上遇到了以下问题。我在 tomcat 上部署了应用程序,当我尝试让 websocket 工作时,出现以下错误。

任何人都对我的冲突在哪里有任何想法,我知道它是一个 Maven 依赖问题,一直在遍历层次结构......

0 投票
0 回答
279 浏览

spring-websocket - Spring websocket 消息传递模板不会在没有 @Scheduler 注释的情况下从 Controller 发布数据

上面的代码按预定的延迟时间将数据发布到 UI。但是如果我注释掉@Scheduler 注释并从handleRequest 调用此方法,它不会将数据发布到UI。可能是什么原因?

0 投票
1 回答
718 浏览

spring - Spring 4 STOMP 在连接时未在标头中发送队列后缀

我写了一个小项目,它使用带有 Websockets 和 RabbitMQ 作为代理的 Spring MVC 4。我正在尝试发回给单个用户(convertAndSendToUser),但我似乎无法让它工作。这是应用程序的作用:

  1. 通过 HTTP 向 Spring Security 进行身份验证。身份验证通过 AJAX 进行,后端为每个新连接分配一个 UUID 作为用户名。可能有多个客户端使用相同的用户名,所以我希望能够针对单个浏览器,尽管它们可能使用相同的用户名登录
  2. 在通过 AJAX 进行身份验证后,webapp 使用 STOMP over Websockets 连接到 API。这些是在 CONNECT FRAME 中发回的标头

    正文:"" 命令:"CONNECTED" 标头:对象心跳:"0,0" 服务器:"RabbitMQ/3.3.1" 会话:"session-OGzAN6T8Y0X9ft3Jq04fiQ" 用户名:"88dc9424-72e3-4814-be8c- e31dbf89b521" 版本:"1.1"

如您所见,没有frame-suffix或 session-id 字段。

  1. 当我从后端使用 convertAndSendToUser 时,响应会发送到一个独特的队列,例如:/exchange/jobs-userh6g_48h9。队列名称是 /exchange/jobs 但 Spring 自动附加后缀-userh6g_48h9。用户名是“user”,sessionId 是“h6g_48h9” 这很好,我想要这种行为,但问题是客户端(webapp)在 CONNECT 框架中没有得到这个会话 id,没有办法让它实际上订阅了那个独特的队列。

如何解决这个问题?我希望在连接时将队列后缀/会话 ID 发送回给我,以便客户端可以获取此后缀并订阅他的唯一队列。由于缺乏信息,目前没有消息从服务器返回。

0 投票
1 回答
1287 浏览

java - 手动设置 Spring WebSocket STOMP 支持

我正在尝试使用 spring-websocket 和 spring-messaging 设置一个 STOMP WS 端点。我正在尝试手动执行此操作:根本不涉及应用程序上下文,当然也没有调度程序。我的目标是在 ServletContextListener 内的代码中连接适当的 Spring 组件,然后在我的 JSR 356 兼容容器(Tomcat 7)中直接使用 javax.websocket.server.ServerContainer 注册连接的组件。首先,我想使用 spring-messaging 中内置的“简单”代理来实现这个功能;其次,我想实现自己的“代理”,以使用 VM 传输直接与进程内 ActiveMQ 集成。这将与 spring-messaging 也提供的 STOMP 中继形成对比。

Spring 文档状态(http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html):

“...Spring 的 WebSocket 支持不依赖于 Spring MVC。借助 WebSocketHttpRequestHandler 将 WebSocketHandler 集成到其他 HTTP 服务环境中相对简单。”

但是,我发现它并不简单。本质上,我从以下内容开始:

并以各种不连贯的 spring-websocket 和 spring-messaging 构造函数调用结束,这些调用无法编译,当然不值得在这里重现。

我意识到这有点模糊,这是因为我有点迷路了!有没有人做过这样的事情,或者有一些一般性的指导可以做出贡献?

0 投票
2 回答
21204 浏览

spring - 如何在连接事件(SockJS、STOMP、Spring)上发送消息?

我通过 SockJS 通过 STOMP 连接到我的 Spring 后端。一切正常,配置适用于所有浏览器等。但是,我找不到发送初始消息的方法。情况如下:

  1. 客户端连接到主题

后端配置看起来或多或少像这样:

  1. I want to send to the client an automatic reply from the backend (on the connection event) so that I can already provide him with some dataset (e.g. read sth from the db) without the need for him (the client) to send a GET request (or any other). So to sum up, I just want to send him a message on the topic with the SimMessagingTemplate object just after he connected.

Usually I do it the following way, e.g. in a REST controller, when the template is already autowired:

How to achieve this on connect event?

UPDATE

I have managed to make it work. However, I am still a bit confused with the configuration. I will show here 2 configurations how the initial message can be sent:

1) First solution

JS part

Java part

Configuration

...和其他电话

2)第二种解决方案

JS部分

Java部分

配置

...和其他电话

概括:

第一种情况使用两个订阅——我想避免这种情况,并认为这可以只用一个来管理。

然而,第二个没有应用前缀。但至少我可以有一个订阅来收听提供的主题以及发送初始消息。

0 投票
1 回答
884 浏览

spring - 在内部订阅 spring-websocket 消息

我正在使用 spring-websocket 将消息推送到浏览器客户端。

我的设置几乎与投资组合示例中的设置相同,我使用MessageSendingOperations发送消息:

这完美地工作。

但我也希望能够在内部订阅相同的消息。

MessageReceivingOperations几乎看起来像使用的那个,但它似乎只支持拉消息。我更希望将消息推送到我的服务。

SubscribableChannel.subscribe()看起来也很有希望,但是我如何获得正确的频道呢?

我真的很希望能够调用类似的东西

0 投票
1 回答
13940 浏览

spring - 如何在spring websockets中找到所有订阅主题的用户

在使用 Spring Websockets 制作诸如聊天应用程序之类的东西时,了解谁订阅了任何给定主题是很有用的。例如,在客户端中显示的存在数据。

我知道我可以实现 ApplicationListener 并保留我自己的“已连接用户”列表,但似乎该库必须已经在做这项工作。

直接从库中获取活动订阅信息的推荐方法是什么(而不在内存或数据库中维护我自己的列表)。

0 投票
2 回答
625 浏览

spring - Stomp.js 和 Spring WebSocket 与 Web MVC 项目的集成

我有一个以 '*.htm' 扩展名运行的 spring 项目,我们已将其绑定在 web.xml 文件中。

现在我想为聊天应用程序集成 Spring WebSocket 和 stomp js,但这里的问题是 stomp.js 正在将请求发送到没有“.htm”扩展名的服务器。因此,我在每个请求(信息或其他 xhr)中都收到 404 错误。

有什么方法可以启用 Spring WebSocket 和 stomp js 扩展名为 '.htm' 吗?

我无法删除此扩展程序,它将拖累我当前的应用程序。

0 投票
1 回答
8497 浏览

stomp - Spring Stomp @SubscribeMapping 用于用户目标

当用户使用 @SubscribeMapping 注释订阅 stomp 用户目的地时,我试图得到通知。我的想法是在它加入时发送一些初始化数据。

虽然我无法让这个工作:

Javascript:

Java端:

我尝试了很多映射组合,例如“/user/monitor-{clientId}”、“/user/monitor”(删除clientId),完全没有成功。

什么是预期的映射值,所以这个被调用?

谢谢!

0 投票
6 回答
12693 浏览

spring - Spring 4 websocket + Tomcat 7.54 异步支持不起作用

我正在使用 Spring websockets 和 stomp.js 创建一个示例聊天应用程序,我使用的是 tomcat 7.54,但是在运行该应用程序时,当浏览器发出 xhr 请求时,我遇到了一个支持异步的错误。

服务器信息:Apache Tomcat/7.0.54 Servlet 版本:3.0 JSP 版本:2.2 Java 版本:1.7.0_25

Web.xml

调度程序-servlet.xml

错误