Chapter 27. Examples for Chapter 13
In Chapter 13, you learned how clients can invoke HTTP requests in the background. You also learned how the server side can detach response processing from the original calling thread with an AsyncResponse
. In this chapter, we’ll use both of these features to implement a customer chat service.
Example ex13_1: Chat REST Interface
Before we dive into code, let me explain the REST interface for our chat service. The service will share a URL to both send and receive chat messages. The service will work much like Twitter in that if one user posts a chat, anybody listening for chats will see it. Posting a chat is a simple HTTP POST request. Here’s an example request:
POST
/chat
HTTP
/
1.1
Host
:
localhost:8080
Content-Type
:
text/plain
Hello everybody
As you can see, all the user has to do is post a simple text message to the /chat URL and messages will be sent to all listeners.
To receive chat messages, clients will make a blocking GET request to the chat server:
GET
/
chat
HTTP
/
1.1
Host:
localhost:
8080
When a chat becomes available, this GET request returns with the next chat message. Additionally, a next
Link
header is sent back with the HTTP response:
HTTP
/
1.1
200
OK
Content-Type
:
text/plain
Link
:
</chat?current=1>; rel=next
Hello everybody
We do not want the chat client to lose any messages while it is processing a response. The next
link is a placeholder into the list of messages that are posted to the server. After displaying the chat message, the client will ...
Get RESTful Java with JAX-RS 2.0, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.