Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

INTEXT-24 Spring Integration WebSocket Server v.0.1.0 #17

wants to merge 18 commits into


None yet
2 participants

garyrussell commented Dec 19, 2012

Initial Version

  • simple Web Page demonstration
  • Autobahn Test Suite 1.1.x Tests Compliance

garyrussell added some commits Oct 14, 2012

@garyrussell garyrussell 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

    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()
@garyrussell garyrussell Use Interceptor for Handshake
Move handshake to an interceptor instead of doing it in the SI

Add close button to web page.

Add code to remove state from deserializer on close.
@garyrussell garyrussell Implement Orderly Close Per RFC6455
Now passes 1.1.x tests from the Autobahn Test Suite.
@garyrussell garyrussell Rename Packages; Change Version to 0.1.0.
@garyrussell garyrussell Support Autobahn 1.2.x Tests (Binary) 48fe227
@garyrussell garyrussell Autobahn Test 2.x (Ping/Pong) 4ca0e50
@garyrussell garyrussell Autobahn Tests 3.* (Reserved Bits) ad5df41
@garyrussell garyrussell Autobahn Tests 4.* (Invalid Opcodes) 0b398cc
@garyrussell garyrussell Autobahn 5.* (Fragmentation) ac13fc1
@garyrussell garyrussell Autobahn 6.* (UTF-8 Handling) c916729
@garyrussell garyrussell Autobahn Tests 7.* (Close Handling) c9df3be
@garyrussell garyrussell Autbahn Test Suite - Final - All Tests Pass
4 "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}}
@garyrussell garyrussell Remove sysout
Replace with logger.debug().
@garyrussell garyrussell Refactoring #1 - 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.
@garyrussell garyrussell Refactoring #2 Remove SockJS Classes
Remove left-over classes; done in a separate commit so
they can be restored later, when SockJS support is added.
@garyrussell garyrussell 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, use:

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

in the wstest config file.
@garyrussell garyrussell 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.
@garyrussell garyrussell Polishing - Reject Non WS Connections
Also only apply Resequencer if NIO Connection factory is
configured with apply-sequence.

Also check protocol version - only 13 is supported.

@ghillert ghillert pushed a commit to ghillert/spring-integration-extensions that referenced this pull request Jan 7, 2013

Gunnar Hillert Merge pull request #17 from garyrussell/INTEXT-24
* garyrussell-INTEXT-24:
  INTEXT-24 Lightweight WebSocket Server

@ghillert ghillert closed this Jan 7, 2013

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment