Java Reference
In-Depth Information
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
/chat HTTP
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. Addi-
tionally, a next Link header is sent back with the HTTP response:
HTTP
HTTP / 1.1 200 OOK
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 dis-
playing the chat message, the client will do a new GET request to the server using the URL
contained within the next Link header:
Search WWH ::




Custom Search