1. 23 5月, 2015 1 次提交
  2. 19 2月, 2015 1 次提交
  3. 30 12月, 2014 1 次提交
  4. 24 12月, 2014 1 次提交
  5. 24 10月, 2014 2 次提交
    • R
      Simple broker sends notice after disconnect · 01aa64c5
      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
      01aa64c5
    • R
      Add ImmutableMessageChannelInterceptor · 687955a7
      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
      687955a7
  6. 21 10月, 2014 1 次提交
  7. 11 10月, 2014 1 次提交
  8. 24 9月, 2014 1 次提交
    • R
      Log WebSocket connection issues at DEBUG level · 5b1cbf03
      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
      5b1cbf03
  9. 20 9月, 2014 1 次提交
    • R
      Extend websocket scope to event publication · a99ef6d9
      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
      a99ef6d9
  10. 19 9月, 2014 2 次提交
  11. 09 7月, 2014 2 次提交
    • R
      STOMP and WebSocket messaging related logging updates · 48236be4
      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
      48236be4
    • R
      Add STOMP/WebSocket stats collection · ab4864da
      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
      ab4864da
  12. 28 6月, 2014 1 次提交
  13. 27 6月, 2014 1 次提交
    • R
      Fine tune STOMP and WebSocket related logging · 113fd118
      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
      113fd118
  14. 26 6月, 2014 1 次提交
    • R
      Add SockJS client · e82df99a
      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
      e82df99a
  15. 12 5月, 2014 1 次提交
    • R
      Add WebSocket scope · 2c4cbb61
      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
      2c4cbb61
  16. 09 5月, 2014 1 次提交
    • R
      Allow use of @SendToUser even w/o authenticated user · 97fb308b
      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
      97fb308b
  17. 26 4月, 2014 1 次提交
  18. 15 4月, 2014 1 次提交
  19. 14 4月, 2014 2 次提交
    • R
      Switch BufferingStompDecoder to decoration · 65b17b80
      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.
      65b17b80
    • R
      Make use of enhanced MessageHeaderAccessor support · ae942ffd
      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
      ae942ffd
  20. 05 4月, 2014 1 次提交
    • R
      Rename header for "orig" destination · 5e925ac0
      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.
      5e925ac0
  21. 04 4月, 2014 1 次提交
  22. 26 3月, 2014 1 次提交
  23. 25 3月, 2014 8 次提交
  24. 23 3月, 2014 2 次提交
    • R
      7af74b24
    • R
      Improve ConcurrentWebSocketSessionDecorator · ffac748f
      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
      ffac748f
  25. 21 3月, 2014 2 次提交
  26. 20 3月, 2014 1 次提交
    • R
      Add session attributes to SimpMessageHeaderAccessor · 1bab8a39
      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
      1bab8a39
  27. 14 2月, 2014 1 次提交
    • R
      Ensure matching user destination returned · 32e5f57e
      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
      32e5f57e