* 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.
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 #.