问题标签 [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.
spring-mvc - spring-mvc,websockets 推送集成
我已经按照这个链接http://spring.io/guides/gs/messaging-stomp-websocket/启动并运行了该应用程序。
我想要的不止于此,我希望能够将数据推送回客户端,而无需客户端发送任何内容。
所以我设置了一个长时间运行的任务,它带有一个类似于下面的监听器
GreetingController 实现了 RunnableListener 并且 RunnableListener 有一个方法 public Greeting greeting(HelloMessage message);
方法的实现是启动一个线程,然后调用监听方法。。
发生这种情况时,我会在控制台上看到输出,但在浏览器上看不到任何内容。
谁能告诉我如何启动正在运行的任务并让服务器使用 Spring 而不是 poll 将内容推送到浏览器(javascript 中的 setTimeout 内容?)
问候锡
spring - Spring WebSockets exception when using Spring 4.0.3.RELEASE
I have the following web socket configuration
The exception which i see from time to time is
after updating to nio connector i still receive the following exceptions
java - Error on Delivery Message on Spring WebSocket using StompClient
I'm trying to send messages to my topic, but the problem is when I send the message nothing happens... I'm using apache tomcat 7.0.53
UPDATE: 04/15: Link to test:
http://ec2-54-187-72-145.us-west-2.compute.amazonaws.com:8080/kupo
Login: admin
Password: admin
LINK TO ACCESS TOMCAT LOG:
http://ec2-54-187-72-145.us-west-2.compute.amazonaws.com:28778/
P.S: You need to checked the combobox on the sidebar to start watch the messages
Github Link: https://github.com/tiarebalbi/kupo
LOG:
CODE:
Javascript Connect:
Browser Console:
Websocket Context Configuration:
spring - Spring 4 STOMP over Websockets-如何正确设置登录名和密码
我正在玩 Spring 4 Stomp over Websockets。现在我正在尝试将登录名和密码放入我的配置中。
但是当我尝试使用不同的登录名和密码连接时,我仍然可以连接。这是我的javascript。
我的配置有问题吗?我将如何正确设置它。谢谢
java - 是否有任何解决方案可以使用 spring4 websocket 向一组用户(不是所有用户)发送消息?
最近,我使用 spring4 websocket 将消息推送给最终用户。
我知道,在类SimpMessageSendingOperationsconvertAndSend
中有 2 种方法( , convertAndSendToUser
)来发送消息 。
但是有什么办法可以给一组用户发送消息,而组外用户不能订阅消息呢?
非常感谢。
spring - Spring WebSocket - 在 clientOutboundChannel 上顺序传递消息(每个队列)
我正在使用 Spring WebSockets、Messaging 和 RabbitMQ 开发基于事件的实时应用程序。在这个应用程序中,消息需要按照它们插入 RabbitMQ 的确切顺序传递给客户端。
“已编辑”
我们的目标是从浏览器接收消息,在服务器上按顺序处理它(针对由路由参数确定的唯一对象),丰富消息并通过外部 STOMP MQ (RabbitMQ) 将其广播到所有订阅浏览器。
我们的MessageMapping方法如下:
@MessageMapping(/commands.{route}.{data}) public CommandMessage receiveCommand(CommandMessage message, Principal principal) {
}
如果我们将 ClientInboundChannel 和 ClientOutboundChannels 配置为 corePoolSize 和 maxPoolSize 各为 1,则所有消息都是有序的。
如果我们在 ClientInboundChannel 上增加 corePoolSize 和 maxPoolSize,消息到达 MQ 的顺序不正确;如果我们对 ClientOutboundChannel 进行同样的增加,消息会以错误的顺序到达浏览器。
]
测试是使用单个浏览器客户端完成的。
我们打开了对 StompBrokerRelayMessageHandler 的跟踪,并收到了如下日志条目:
2014-05-06 14:26:39 TRACE [clientInboundChannel-6] osmssStompBrokerRelayMessageHandler [StompBrokerRelayMessageHandler.java:412] 处理消息=[Payload byte[303]][Headers={stompCommand=SEND, nativeHeaders={content-type=[ application/json;charset=UTF-8],destination=[/topic/commands.BKN01.20140318]},simpMessageType=MESSAGE,simpDestination=/topic/commands.BKN01.20140318,contentType=application/json;charset=UTF- 8,simpSessionId=ehjcoxb3,id=a31d0e3d-12cc-f562-1ec2-e2d7ba0899eb,时间戳=1399400799940}] 2014-05-06 14:26:39 DEBUG [clientInboundChannel-6] osmssStompBrokerRelayMessageHandler [StompBrokerRelayMessageHandler] java:658 消息处理程序。经纪人 2014-05-06 14:26:39 TRACE [clientInboundChannel-3] osmssStompBrokerRelayMessageHandler [StompBrokerRelayMessageHandler.java:406] 忽略到目的地的消息=/app/commands.BKN01.20140318 2014-05-06 14:26:39 TRACE [clientInboundChannel-7] osmssStompBrokerRelayMessageHandler [StompBrokerRelayMessageHandler.java:406] 忽略到目的地的消息=/app/commands.BKN01 .20140318 2014-05-06 14:26:39 TRACE [clientInboundChannel-1] osmssStompBrokerRelayMessageHandler [StompBrokerRelayMessageHandler.java:412] 处理消息=[Payload byte[314]][Headers={stompCommand=SEND, nativeHeaders={content-type =[application/json;charset=UTF-8], 目的地=[/topic/commands.BKN01.20140318]}, simpMessageType=MESSAGE, simpDestination=/topic/commands.BKN01.20140318, contentType=application/json;charset= UTF-8,simpSessionId=ehjcoxb3,id=3cc7b4ae-8ea4-ef8a-6c4d-c3bc1ed23bcd,时间戳=1399400799947}] 2014-05-06 14:26:39 调试 [clientInboundChannel-1] osmssStompBrokerRelayMessageHandler [StompBrokerRelayMessageHandler.java:658] 将消息转发给代理
我们还为 org.springframework.web.socket.messaging 包中的 StompSubProtocolHandler 开启了跟踪,并收到如下消息:
2014-05-07 10:58:58 TRACE [http-nio-8080-exec-5] oswsmStompSubProtocolHandler [StompSubProtocolHandler.java:180] 收到来自客户端 session=u8wrnsr6 的消息
这些信息都没有提供一种简单的方法来将我们的 message.serverSequence 属性(在发送到 MQ 之前设置)与日志详细信息的各种 id 进行映射。
有什么方法可以增加入站/出站通道线程,从而使排序保持不变?例如,通道是否可以绑定到“路线”,或者线程可以与“路线”挂钩?
请帮忙。
谢谢,
担
java - Spring 4 Web 套接字 - 我必须有一个 stomp 代理吗?
我一直在使用以下链接来玩新的 spring 4 websockets:
http://spring.io/guides/gs/messaging-stomp-websocket/
我想知道我是否必须使用 stomp 代理才能使用 spring 框架?有没有经纪人少的方法来使用它?
谢谢
spring - Spring 4 AbstractWebSocketMessageBrokerConfigurer 与 SockJS 未正确协商传输
所以我必须说,所有的 websocket 教程/示例看起来都很简单,但似乎你真的必须挖掘才能找到简单示例中遗漏的非常重要的信息。在前端使用带有 SockJS 的 Spring 4 Stomp 消息代理时,我的 web 应用程序仍然存在很多问题。
目前,如果我在没有启用 SockJS() 的情况下向 StompEndpointRegistry 添加一个端点,然后使用 dojo 的 dojox/socket 在前端声明我的套接字,Firefox 28 将打开一个 websocket 就好了。但是,我需要 IE8 和 IE9 的支持,所以我切换到 SockJS。使用 AbstractAnnotationConfigDispatcherServletInitializer,我花了很多时间来弄清楚如何确保所有过滤器和 servlet 都设置为使用异步(为此,网络上的文档非常稀少)。一旦我解决了这个问题,我现在可以让它在 Firefox 中工作,但只能使用 xhr_streaming。sessionCookieNeeded 设置为 true 时,IE9 默认尝试使用 iframe 进行连接,但是,它会失败:
如果我将所需的 cookie 设置为 false,IE 将使用 xdr-streaming 并且工作正常,但是,它会丢失请求中的 jsessionid cookie,进而我失去了在控制器中获取 Principal 的能力,这对我很重要。我在 Spring Security 中启用了相同的源 x 帧标头,并且我已经验证了请求中存在标头,但它没有帮助。所以我希望能够弄清楚如何 A)使用 Firefox 中的 WebSocket 传输使 Spring 和 SockJS 正确协商,以及 B)让 IE8 和 9 正确使用 iframe 传输,这样我就可以保留 cookie。
这是我的配置/代码:
网络应用配置:
Spring MVC 配置:
Spring根上下文配置:
弹簧安全:
WebSocket 消息代理配置:
WebSocket 控制器:
最后,我用来测试的 html 中的 javascript:
当我在 Firefox 中连接时,这是我在控制台中看到的:
/info 响应是:
当它尝试建立 websocket 连接时,请注意奇怪的字符串错误。我猜这是我问题的根源,但我没有做任何有趣的事情,我不知道是什么原因造成的。
在 IE 中,这里是网络流量。iframe.html 文件似乎已正确构建,但它无法连接到后端。
信息响应如下所示:
如果有人想查看请求或响应标头,请告诉我。
更新 1:
罗森,感谢您的回复。我从你那里学到的关于 Spring 4 的一切 :)
Firefox 实际上(完全)没有工作,我无法获得 websocket 会话,它降级为 xhr-streaming。使用 xhr-streaming,没有问题,但我想要一个真正的 websocket 会话。
使用 IE,我不确定删除标题会确认什么?我认为 x 帧头只影响 iframe 会话,这根本不起作用。当我禁用需要 cookie 时,IE 使用 xdr-streaming(并且可以工作,尽管无法获取主体)。一旦我启用了 cookie,IE 就会正确地尝试使用 iframe。但即使标题到位,所有尝试都会失败:
iframe-htmlfile 和 iframe-xhr-polling 都失败了。我确实在 IE 中每次刷新都会清除缓存,并且我确实在 SockJS 中启用了调试模式。我会很好地在 IE 中使用 xdr-streaming,但我真的需要 jsessionid cookie。
有什么想法吗?
附带说明一下,如果客户端库代码支持相对路径,那就太好了(它实际上确实使用相对路径构建了 html 文件并且应该可以工作,但仍然会在日志中产生错误),即:
这将使部署到生产环境不那么痛苦。
更新 2:
快速总结:没有变化。
这是我尝试在我的安全配置中使用 .headers().and() 在 IE9 中连接:
/info 的请求标头:
和响应头:
Firefox 没有区别。当它尝试打开 websocket 时,我得到了同样奇怪的字符串错误,然后回退到 xhr-streaming:
spring - 如何使用 CloudAMQP 配置 Spring Websocket
我有一个 Spring Boot 应用程序,我将其部署到 Cloud Foundry 实例 (BlueMix)。我已将 CloudAMQP 实例绑定到应用程序,并希望使用它来发送我的 STOMP 消息。我无法正确配置我的 StompBrokerRelayRegistration 类以成功连接 CloudAMP 中的 RabbitMQ 实例。我打过电话
但这试图连接到本地主机。我认为它可能会尝试使用我的 org.springframework.amqp.rabbit.connection.ConnectionFactory bean,但我想不会。
然后我尝试使用 VCAP_SERVICES 中的信息调用 setRelayHost、setRelayPort、setSystemLogin、setSystemPasscode 和 setVirtualHost。完成此操作后,Spring 似乎尝试连接到 RabbitMQ 实例,但根据日志,连接立即关闭说
对等方重置连接
. 任何人都知道我可能做错了什么?
更新
显然我使用了错误的端口。使用端口 5672 会导致立即关闭连接的行为。如果我使用端口 61613,则连接似乎已建立。但是,一旦浏览器尝试建立 websocket,就会引发以下异常
在此之上,我看到了这个警告
有人知道这里出了什么问题吗?
spring - Spring 4 WebSockets 订阅主题
是否可以使用spring消息将spring托管bean中的方法映射到主题订阅?
我在这里查看了示例:http: //assets.spring.io/wp/WebSocketBlogPost.html 包括示例股票应用程序,但看起来所有主题订阅都在客户端。是否也可以在服务器端订阅主题?