In this post I’ll examine how to implement a simple WebSocket-based notification system built on top of Spring. We’ll use the Stomp protocol over SockJS to communicate with either a JQuery-based client or an Angular application.

Being the test-driven developer that you are, you are writing a Jasmine test for your AngularJS factory function, which returns a promise generated by our beloved $q. You know how to test an asynchronous response with Jasmine. You confidently run the test and… bam, you get an error message “Timeout – Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL”
You are developing your web client (AngularJS or any other) against your REST services’ server, secured using cookies-based sessions and CSRF tokens sent as cookies. You’ve done everything by the book, followed the tutorials to make your security work, especially CORS and CSRF tokens. And yet you still get a pesky 403 when trying to login!