Files
spring-integration-extensions/spring-integration-ip-extensions
Gary Russell 2034dbb6c8 INTEXT-24 Lightweight WebSocket Server
* Add Lightweight WebSocket Server Support
* Run WebSocketServerTests and open ws.html in a browser.
  - Sending 'start' begins sending an incrementing # once per second.
  - 'stop' stops the stream (leaving the socket open), 'start' resumes again.
  - Test terminates after 60 seconds.
* Fixes and Improvements for WebSocket Server
  - fix masking
  - fix bytes sent
  - add error handling to remove dead sockets
  - create new web page instead of using vert.x example
  - add status box
  - automatically update message to send to start/stop appropriately
  - update SI to 2.2.0.RELEASE
  - change test to a main()
* Use Interceptor for Handshake
* Move handshake to an interceptor instead of doing it in the SI flow.
* Add close button to web page.
* Add code to remove state from deserializer on close.
* Implement Orderly Close Per RFC6455
* Rename Packages - org.springframework.integration.x.*
* Change Version to 0.1.0.
* Autbahn Test Suite - All Tests Pass
  - 1.1.x tests from the Autobahn Test Suite.
  - Autobahn 1.2.x Tests (Binary)
  - Autobahn Test 2.* (Ping/Pong)
  - Autobahn Tests 3.* (Reserved Bits)
  - Autobahn Tests 4.* (Invalid Opcodes)
  - Autobahn 5.* (Fragmentation)
  - Autobahn 6.* (UTF-8 Handling)
  - Autobahn Tests 7.* (Close Handling)
* "non-strict" results - fast fail on bad UTF-8. We currently don't detect the bad UTF-8 until all fragments are received.
* Run AutobahnTests.java and add the following to fuzzingclient.json...

    {"agent": "SIServer", "url": "ws://localhost:18080", "options": {"version": 18}}

* Remove sysout
* Replace with logger.debug().
* Remove SockJS Dependencies
  - Project started as a SockJS client; WebSocket classes were incorrectly dependent on some SockJS code.
* Extracted the WebSocket code to its own class hierarchy.
* Test Autobahn with SSL (wss://...)
  - Add trust store and key store.
  - Add config to listen for wss: as well as ws: connections
* To test Autobahn for both ws and wss - In the wstest config file use:

    "servers": [
        {"agent": "SIServer", "url": "ws://localhost:18080", "options": {"version": 18}},
        {"agent": "SIServerSSL", "url": "wss://localhost:28080", "options": {"version": 18}}
              ],

* Polishing + Resequence when Using NIO
  - Improve debug logging
  - Clear fragments
  - Add ResequencingMessageHandler to resequence messages when using NIO (frames can arrive on different threads, out of order; this causes issues with the Autobahn tests.
* Reject Non WS Connections
  - only apply Resequencer if NIO Connection factory is configured with apply-sequence.
  - check protocol version - only 13 is supported.
2013-01-07 16:35:02 -05:00
..
2013-01-07 16:35:02 -05:00

Spring Integration IP Extensions

Welcome to the Spring Integration IP Extensions project. It is intended to supplement the spring-integration-ip module with, for example, custom serializers/deserializers.

Building

If you encounter out of memory errors during the build, increase available heap and permgen for Gradle:

GRADLE_OPTS='-XX:MaxPermSize=1024m -Xmx1024m'

To build and install jars into your local Maven cache:

./gradlew install

To build api Javadoc (results will be in build/api):

./gradlew api

To build reference documentation (results will be in build/reference):

./gradlew reference

To build complete distribution including -dist, -docs, and -schema zip files (results will be in build/distributions)

./gradlew dist

Using SpringSource Tool Suite

Gradle projects can be directly imported into STS

Using PLain Eclipse

To generate Eclipse metadata (.classpath and .project files), do the following:

./gradlew eclipse

Once complete, you may then import the projects into Eclipse as usual:

File -> Import -> Existing projects into workspace

Browse to the 'spring-integration' root directory. All projects should import free of errors.

Using IntelliJ IDEA

To generate IDEA metadata (.iml and .ipr files), do the following:

./gradlew idea

For more information, please visit the Spring Integration website at: http://www.springsource.org/spring-integration

WebSocket Server Demo

This demonstrates how to use the TCP adapters to provide a very lightweight websocket server.

Run WebSocketServerTests as a Java Application (main) and open

file:///.../spring-integration-extensions/spring-integration-ip-extensions/src/test/java/org/springframework/integration/ip/extensions/sockjs/ws.html

in a browser.

Opening the page opens the WebSocket.

Sending 'start' begins sending an incrementing # once per second. 'stop' stops the stream (leaving the socket open), 'start' resumes again. Multiple browser instances get their own sequence #.