- 23 5月, 2015 1 次提交
-
-
由 Juergen Hoeller 提交于
-
- 19 2月, 2015 1 次提交
-
-
由 Rossen Stoyanchev 提交于
Issue: SPR-12728
-
- 30 12月, 2014 1 次提交
-
-
由 Rossen Stoyanchev 提交于
The following two refinements have been added: 1) SockJS doesn't support binary messages so don't even try 2) don't bother if payload.length == 0 Issue: SPR-12475
-
- 24 12月, 2014 1 次提交
-
-
由 Rossen Stoyanchev 提交于
After this change the StompSubProtocolHandler sends STOMP frames with content-type=octet-stream as a binary WebSocket message. Issue: SPR-12475
-
- 24 10月, 2014 2 次提交
-
-
由 Rossen Stoyanchev 提交于
Before this change the simple broker simply removed subscriptions upon receiving a DISCONNECT message assuming it was a result of a client STOMP WebSocket session ending. However, if the server-side application sends a DISCONNECT to the broker in order to terminate a session, the STOMP WebSocket session could remain unware without any further action. This change ensures the simple broker sends a DISCONNECT_ACK message downstream whenever it receives a DISCONNECT. Issue: SPR-12288
-
由 Rossen Stoyanchev 提交于
This change adds a ChannelInterceptor that flips the immutable flag on messages being sent. This allows components sending messages to leave the message mutable for interceptors to further apply modifications before the message is sent (and exposed to concurrency). The interceptor is automatically added with the STOMP/WebSocket Java and XML config and the StompSubProtocolHandler leaves parsed incoming messages mutable so they can be further modified before being sent. Issue: SPR-12321
-
- 21 10月, 2014 1 次提交
-
-
由 Juergen Hoeller 提交于
-
- 11 10月, 2014 1 次提交
-
-
由 Rossen Stoyanchev 提交于
Issue: SPR-12301
-
- 24 9月, 2014 1 次提交
-
-
由 Rossen Stoyanchev 提交于
WebSocket clients going away is an expected and common occurance. Logging at ERROR level on failure to close a connection or on failures to write data to a WebSocket sessions has a high potential for false positives with very little to do. This change lowers the log level for a number of log messages that fit this category. This should be helped by the effort already spent for 4.1 to ensure logging at DEBUG level doesn't produce excessive amounts of logging. Issue: SPR-12155
-
- 20 9月, 2014 1 次提交
-
-
由 Rossen Stoyanchev 提交于
This change extends the "websocket" scope to ApplicationContext events published from StompSubProtocolHandler. This however will only work with ApplicationEventMulticaster that multicasts events in the same thread. Issue: SPR-12172
-
- 19 9月, 2014 2 次提交
-
-
由 Rossen Stoyanchev 提交于
SessionDisconnectEvent now extends AbstractSubProtocolEvent. Issue: SPR-12156
-
由 Rossen Stoyanchev 提交于
Issue: SPR-12215
-
- 09 7月, 2014 2 次提交
-
-
由 Rossen Stoyanchev 提交于
This change removes most logging at INFO level and also ensures the amount of information logged at DEBUG level is useful, brief, and not duplicated. Also added is custom logging for STOMP frames to ensure very readable and consise output. Issue: SPR-11934
-
由 Rossen Stoyanchev 提交于
This change adds collection of stats in key infrastructure components of the WebSocket message broker config setup and exposes the gathered information for logging and viewing (e.g. via JMX). WebSocketMessageBrokerStats is a single class that assembles all gathered information and by default logs it once every 15 minutes. Application can also easily expose to JMX through an MBeanExporter. A new section in the reference documentation provides a summary of the available information. Issue: SPR-11739
-
- 28 6月, 2014 1 次提交
-
-
由 Rossen Stoyanchev 提交于
Issue: SPR-11813
-
- 27 6月, 2014 1 次提交
-
-
由 Rossen Stoyanchev 提交于
Optimize logging with tracking the opening and closing of WebSocket sessions and STOMP broker connections in mind. While the volume of messages makes it impractical to log every message at anything higher than TRACE, the opening and closing of connections is more manageable and can be logged at INFO. This makes it possible to drop to INFO in production and get useful information without getting too much in a short period of time. The logging is also optimized to avoid providing the same information from multiple places since messages pass through multiple layers. Issue: SPR-11884
-
- 26 6月, 2014 1 次提交
-
-
由 Rossen Stoyanchev 提交于
This change adds a new implementation of WebSocketClient that can connect to a SockJS server using one of the SockJS transports "websocket", "xhr_streaming", or "xhr". From a client perspective there is no implementation difference between "xhr_streaming" and "xhr". Just keep receiving and when the response is complete, start over. Other SockJS transports are browser specific and therefore not relevant in Java ("eventsource", "htmlfile" or iframe based variations). The client loosely mimics the behavior of the JavaScript SockJS client. First it sends an info request to find the server capabilities, then it tries to connect with each configured transport, falling back, or forcing a timeout and then falling back, until one of the configured transports succeeds. The WebSocketTransport can be configured with any Spring Framework WebSocketClient implementation (currently JSR-356 or Jetty 9). The XhrTransport currently has a RestTemplate-based and a Jetty HttpClient-based implementations. To use those to simulate a large number of users be sure to configure Jetty's HttpClient executor and maxConnectionsPerDestination to high numbers. The same is true for whichever underlying HTTP library is used with the RestTemplate (e.g. maxConnPerRoute and maxConnTotal in Apache HttpComponents). Issue: SPR-10797
-
- 12 5月, 2014 1 次提交
-
-
由 Rossen Stoyanchev 提交于
This change adds support for a custom "websocket" scope. WebSocket-scoped beans may be injected into controllers with message handling methods as well as channel interceptor registered on the "inboundClientChannel". Issue: SPR-11305
-
- 09 5月, 2014 1 次提交
-
-
由 Rossen Stoyanchev 提交于
Before this change, subscribing to a user destination and use of @SendToUser annotation required an authenticated user. This change makes it possible to subscribe to a user destination from WebSocket sessions without an authenticated user. In such cases the destination is associated with one session only rather than with a user (and all their sessions). It is then also possible to send a message to a user destination via "/user/{sessionId}/.." rather than "/user/{user}/...". That means @SendToUser works relying on the session id of the input message, effectively sending a reply to destination private to the session. A key use case for this is handling an exception with an @MessageExceptionHandler method and sending a reply with @SendToUser. Issue: SPR-11309
-
- 26 4月, 2014 1 次提交
-
-
由 Rossen Stoyanchev 提交于
The original fix for SPR-11423: https://github.com/spring-projects/spring-framework/commit/32e5f57e647022d9ea82c03670936bf31f8467de was insufficient when using an external broker since the original destination header has to be in the "native headers" map (i.e. with STOMP headers) in order to be included in messages broadcast by the broker.
-
- 15 4月, 2014 1 次提交
-
-
由 Rossen Stoyanchev 提交于
Issue: SPR-11468
-
- 14 4月, 2014 2 次提交
-
-
由 Rossen Stoyanchev 提交于
The BufferingStompDecoder now decorates rather than extend StompDecoder. This allows a single StompDecoder instance to be configured and extended independantly while buffering remains a separate concern.
-
由 Rossen Stoyanchev 提交于
Mutate rather than re-create headers when decoding STOMP messages before a message is sent on a message channel. Use MessageBuilder.createMessage to ensure the fully prepared MessageHeaders is used directly MessageHeaderAccessor instance. Issue: SPR-11468
-
- 05 4月, 2014 1 次提交
-
-
由 Rossen Stoyanchev 提交于
The UserDestinationMessageHandler adds a header providing a hint for what the original destination a user may have used when subscribing. That is then used when writing messages back to WebSocket clients to ensure they dont see the internally used, transformed user destination. This change moves the header name constatn to make it more broadly applicable. For example SPR-11645.
-
- 04 4月, 2014 1 次提交
-
-
由 Rossen Stoyanchev 提交于
Issue: SPR-11655
-
- 26 3月, 2014 1 次提交
-
-
由 Rossen Stoyanchev 提交于
-
- 25 3月, 2014 8 次提交
-
-
由 Rossen Stoyanchev 提交于
-
由 Rossen Stoyanchev 提交于
Issue: SPR-11578
-
由 Rossen Stoyanchev 提交于
Issue: SPR-11575
-
由 Rossen Stoyanchev 提交于
Issue: SPR-11578
-
由 Rossen Stoyanchev 提交于
Issue: SPR-11527
-
由 Rossen Stoyanchev 提交于
Issue: SPR-11527
-
由 Sebastien Deleuze 提交于
BufferingStompDecoder message buffer size limit can now be configured with JavaConfig MessageBrokerRegistry.setMessageBufferSizeLimit() or with XML <websocket:message-brocker message-buffer-size="">. Issue: SPR-11527
-
由 Rossen Stoyanchev 提交于
Before this change the StompDecoder decoded and returned only the first Message in the ByteBuffer passed to it. So to obtain all messages from the buffer, one had to loop passing the same buffer in until no more complete STOMP frames could be decoded. This chage modifies StompDecoder to return List<Message> after exhaustively decoding all available STOMP frames from the input buffer. Also an overloaded decode method allows passing in Map that will be populated with any headers successfully parsed, which is useful for "peeking" at the "content-length" header. This change also adds a BufferingStompDecoder sub-class which buffers any content left in the input buffer after parsing one or more STOMP frames. This sub-class can also deal with fragmented messages, re-assembling them and parsing as a whole message. Issue: SPR-11527
-
- 23 3月, 2014 2 次提交
-
-
由 Rossen Stoyanchev 提交于
-
由 Rossen Stoyanchev 提交于
Before this change the decorator ensured that for a specific WebSocket session only one thread at a time can send a message. Other threads attempting to send would have their messages buffered and each time that occurs, a check is also made to see if the buffer limit has been reached or the send time limit has been exceeded and if so the session is closed. This change adds further protection to ensure only one thread at a time can perform the session limit checks and attempt to close the session. Furthermore if the session has timed out and become unresponsive, attempts to close it may block yet another thread. Taking this into consideration this change also ensures that state associated with the session is cleaned first before an attempt is made to close the session. Issue: SPR-11450
-
- 21 3月, 2014 2 次提交
-
-
由 Rossen Stoyanchev 提交于
Since we now wrap the WebSocketSession with a concurrent decorator, the synchronized keyword around message sending needed to be removed. Issue: SPR-11586
-
由 Rossen Stoyanchev 提交于
-
- 20 3月, 2014 1 次提交
-
-
由 Rossen Stoyanchev 提交于
This change exposes the WebSocketSession attributes through a message header. The StompSubProtocolHandler adds this to incoming messages. For now messaging handling methods can access the map via @Header, e.g.: @Header(StompHeaderAccessor.SESSION_ATTRIBUTES) Map<String, Object> attrs) { Issue: SPR-11566
-
- 14 2月, 2014 1 次提交
-
-
由 Rossen Stoyanchev 提交于
Before this change, when a client subscribed to a "user" destination (e.g. /user/foo), actual messages received in response to that subscription contained the server-translated, unique user destination (e.g. /foo-user123). This is not an issue for clients such as stomp.js since the subscription is unique and sufficient to match subscription responses. However, other STOMP clients do additional checks on the destination of the subscription and the response. This change ensures that messages sent to clients on user destionations always contain a destination that matches the one on the original subscription. Issue: SPR-11423
-