问题标签 [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 投票
0 回答
368 浏览

spring - 添加 websocket 处理 xml 后 Spring 4 项目无法正常工作

我有一个运行良好的 spring4 webapp,但是在添加 spring websocktes 配置 xml 后,我的应用程序拒绝映射任何 http get 请求。错误消息:Dispatcher servlet 找不到此映射的任何处理程序。

我的 web.xml 看起来像

我的 webapplication-servlet.xml 看起来像

直到现在一切正常,因为我从调度程序 servlet 获取每个请求映射

但是在我的应用程序中集成spring websockets之后,我的调度程序servlet不会将任何http请求映射到我的任何控制器。我在我的 webapplication-servlet.xml 中添加了下面的代码片段,我也尝试在我的应用程序上下文中添加它。

0 投票
0 回答
1133 浏览

spring - Spring 4 WebSockect over STOMP 身份验证

我正在开发基于 Spring 4 WebSocket 的多人游戏。我的服务器是无状态的,所以为了识别我使用令牌的玩家。

在为如何通过 WebSockets 识别玩家而苦苦挣扎了一段时间之后,我想出了这个解决方案:在客户端玩家注册是这样的:

这会将令牌添加到 url,我已经使用 spring security 设置了一个过滤器:

它有效!在所有 WebSockets 请求中,我都有一个 Principal 集。

然而,一些浏览器似乎不支持这一点,例如在Safari中没有设置 Principal,在调试请求时我看到 URL 是正确的并且过滤器工作但没有设置 Principal。同样适用于 IE、Chrome 和 FF 作品。我使用 STOMP ( https://github.com/jmesnil/stomp-websocket ) 作为消息协议。

为什么浏览器之间有不同的行为?是 Spring 还是客户端问题?

0 投票
1 回答
1020 浏览

spring - Spring消息传递websockets - 如何调用setMessageCodec

我正在尝试使用 Spring websocketsGenson而不是Jackson. 当我尝试从客户端连接时,我得到以下信息:

看来我需要设置自定义消息编解码器。

我可以看到一个.setMessageCodec方法出现在上,TransportHandlingSockJsService但我看不到配置选项中可以实际设置它的任何地方。

我认为该.setMessageCodec方法应该存在于SockJsServiceRegistration类中,因此可以从配置中设置它......但它不是......任何想法?

编辑:我相信这是一个错误,所以提出了:https ://jira.spring.io/browse/SPR-12091

0 投票
1 回答
6434 浏览

java - spring如何调用websocket服务器向客户端发送消息

我的项目使用spring框架

WebSocketConfig.java

SystemWebSocketHandler.java

我的jsp客户端

这是我的 websocket 代码,它运行良好

现在我想在控制器中向客户端发送消息,这是我的控制器

我想打电话

向客户端发送消息但 systemWebSocketHandler 为空

如何将systemWebSocketHandler注入控制器或其他一些想法来完成所需的?比如服务器需要向客户端发送消息时连接到websocketserver,完成后关闭

我的英语很差,但我正在努力学习

0 投票
1 回答
1511 浏览

java - 如何限制客户端连接到我的 stomp websocket 处理程序?

我需要跟踪在 Spring 4.x 中向我的 stomp 代理打开 websocket 的用户。stomp 端点以通常的方式配置:

我尝试实现 ApplicationListener 接口以接收 SessionConnectEvent SessionConnectedEvent 但我无法从这些事件中获取远程主机 ip。

我应该如何让客户端的 ip 连接到我的服务?

我的目标是限制从同一个 ip 到我的 websocket 处理程序的连接数。

0 投票
1 回答
1007 浏览

java - 在 Spring 中定义一个“只发送”的 WebSocket 服务器

我想在Spring Web中实现一个WebSocket服务器(由Spring Boot管理),它只允许连接的客户端接收数据流,例如简单的纯文本或STOMP消息。我正在阅读官方网站上的文档指南,但在这些情况下,他们认为是双向对话(客户端也可以向服务器发送消息)。

  1. 对于我的场景,以正确的方式表示 WebSockets(是的,我是这个领域的新手)?

  2. 如果是,我该如何实现 WebSocket?我应该定义一个 @Controller和一个处理程序吗?

  3. 此外,是否可以只允许给定客户端的通信(通过设置路由、IP 地址、令牌等)?

干杯,V。

0 投票
1 回答
1434 浏览

spring - Spring websocket从stomp id获取用户订阅

使用 Spring 4.0.4,我制作了一个 DisconnectHandler,它在 SessionDisconnectEvent 上实现 ApplicationListener。

我可以从事件中获取 sessionid,但是如何获取该 sessionid 的订阅列表,即用户?

0 投票
2 回答
20587 浏览

java - 通过 ServletContextListener 中的 SimpMessagingTemplate 向所有客户端发送消息

我正在使用 Spring 框架,并且我有一个可以工作的 websocket 控制器,如下所示:

我也有这个配置:

那部分效果很好!我可以使用 Stomp.js 在两个或多个浏览器之间成功发送和接收消息。这是不起作用的部分。我已经实现了一个ServletContextListener包含自定义对象的对象,为简单起见,我将其称为“通知程序”。通知程序侦听服务器端发生的某些事件。然后它调用“通知”方法,该方法应该将有关事件的详细信息发送给所有客户端。但是,它不起作用。

我没有例外。SimpMessagingTemplate已经被Spring成功注入,所以它不为空。我已经能够进入 Spring 代码并发SimpleBrokerMessageHandler现在subscriptionRegistry使用SimpMessagingTemplate. 因此,它必须是与控制器正在使用的实例不同的实例。我怎样才能获得subscriptionRegistry控制器使用的相同内容?

0 投票
1 回答
712 浏览

spring - 在 Spring 4 中配置 WebSocket 服务器

我正在使用Spring 4通过WebSockets开发实时通知系统

源代码如下:

网络套接字配置:

LRTStatusListener:

CheckLRTStatusController

该应用程序通过每 2000 毫秒更改一次信息来模拟长期运行事务 (LRT) 的状态。

现在,我通过SockJS定义客户端来测试 WebSocket :

连接工作正常,但我无法看到数据流。

如何正确配置我的应用程序,以便在客户端控制台上生成并路由 WebSocket 服务器发送的消息?

请注意,我还使用内置消息代理来管理消息队列。

0 投票
1 回答
2864 浏览

spring - 如何使用spring从服务器关闭websocket

我正在使用 spring 框架和 spring websocket 4.0.6。

我正在使用 web-socket,我需要找到从服务器关闭它们的方法。

有办法吗?