Echo Example - Jquery-Stream - Echo Example - Comet Streaming Javascript Library - Google Project Hosting
Echo Example - Jquery-Stream - Echo Example - Comet Streaming Javascript Library - Google Project Hosting
1/6 code.google.com/p/jquery-stream/wiki/EchoExample
Project Home Downloads Wiki Issues Source
Updated Aug 14, 2011 by fl owersi ...@gmai l .com
My favorites | Sign in
jquery-stream
Comet Streaming JavaScript Library
Search projects
Search Current pages for Search
EchoEample
Echo Eample
Pleae, ee ChaEample fo pacical e. Thi iki ill no be pdaed.
Echo Eample
Echo Example
Web Page
WebSocket /HTTP Echo Server
Java - Servlet 3.0
Java - Servlet 3.0 and Jetty 8
Web Page
Web Page is an echo client.
Whenever user enters a message, the page makes JavaScript object containing it and send it to the echo server using the jQuery Stream, and
when a message returns from the server, the page displays it.
According to the server support, the stream type may have to be set to http and its URL may have to be modified.
Since the web page is plain HTML page and the jQuery Stream is plain JavaScript library, they don't need any server-side support, so choose a
server implementation in WebSocket/HTTP Echo Server according to your preference.
/echo.html
<!DOCTYPE html>
<h1m1>
<head>
<111e>Echo</111e>
<me1a http-equiv="Content-Type" content="text/html; charset=utf-8" />
<scrp1 type="text/javascript" src="./js/jquery-1.4.1.js"></scrp1>
<scrp1 type="text/javascript" src="./js/jquery.stream.js"></scrp1>
<scrp1 type="text/javascript">
$.stream.setup({enableXDR: 1rue);
$(1unc1on() {
$.stream("./echo", {
open: 1unc1on() {
$("#textfield").removeAttr("disabled").focus();
,
message: 1unc1on(event) {
$("<p />").text(event.data).prependTo("#content");
,
error: 1unc1on() {
$("#textfield").attr("disabled", "disabled");
,
close: 1unc1on() {
$("#textfield").attr("disabled", "disabled");
);
$("#textfield").keyup(1unc1on(event) {
1 (event.which === 13 && $.trim(1hs.value)) {
$.stream().send({message: 1hs.value);
1hs.value = "";
);
);
</scrp1>
<s1y1e>
body {paddng: 0; margn: 0; 1on1-1am1y: 'Trebuchet MS','Malgun Gothic'; 1on1-sze: 62.5%; co1or: #333333
#editor {margn: 15px 25px;
#textfield {Wd1h: 100%; hegh1: 28px; 1ne-hegh1: 28px; 1on1-1am1y: 'Trebuchet MS','Malgun Gothic';
border: medium none; border-co1or: #E5E5E5 #DBDBDB #D2D2D2; border-s1y1e: solid; border-Wd1h: 1px;
#content {hegh1: 100%; over11oW-y: auto; paddng: 0 25px;
#content p {margn: 0; paddng: 0; 1on1-sze: 1.3em; co1or: #444444; 1ne-hegh1: 1.7em; Word-Wrap: break-word;
</s1y1e>
</head>
2/24/12 EchoExample - jquery-stream - Echo Example - Comet Streaming JavaScript Library - Google Project
2/6 code.google.com/p/jquery-stream/wiki/EchoExample
</head>
<body>
<dv id="editor">
<npu1 id="textfield" type="text" disabled="disabled" />
</dv>
<dv id="content"></dv>
</body>
</h1m1>
WebSocke/HTTP Echo See
WebSocket/HTTP Echo Server is just a typical echo server which sends back the client's message through ws or http protocol.
See ServerSideProcessing for details about what methods do what.
If you have implemented the server logic using technology or platform not listed, please annotate it and create a issue to append that code to this
wiki.
Jaa - Sele 3.0
The Servlet 3.0 specification includes support for asynchronous processing of request, but there is no support for WebSocket.
The following example runs with any servlet container implementing Servlet 3.0 such as Tomcat 7 and Jetty 8 only via HTTP protocol.
flowersinthesand.example.EchoServlet
package flowersinthesand.example;
mpor1 java.io.IExcep1on;
mpor1 java.io.Prn1Wr1er;
mpor1 java.util.Nap;
mpor1 java.util.UUID;
mpor1 java.util.concurrent.Concurren1hashNap;
mpor1 javax.servlet.AsyncCon1ex1;
mpor1 javax.servlet.AsyncEven1;
mpor1 javax.servlet.AsyncLs1ener;
mpor1 javax.servlet.5erv1e1Excep1on;
mpor1 javax.servlet.annotation.Web5erv1e1;
mpor1 javax.servlet.http.h11p5erv1e1;
mpor1 javax.servlet.http.h11p5erv1e1eques1;
mpor1 javax.servlet.http.h11p5erv1e1esponse;
// RegIs1eIs a seIv1e1 by ne|1y In1Ioduced anno1a1Ion, _kebSeIv1e1
@WebServlet(urlPatterns = "/chat", asyncSupported = 1rue)
pub1c c1ass Echo5erv1e1 ex1ends h11p5erv1e1 {
prva1e s1a1c 1na1 1ong serialVersionUID = -8823775068689773674L;
prva1e Nap<51rng, AsyncCon1ex1> asyncContexts = neW Concurren1hashNap<51rng, AsyncCon1ex1>();
// ET ne1hod Is used 1o open s1Iean
@Override
pro1ec1ed vod doGet(h11p5erv1e1eques1 request, h11p5erv1e1esponse response)
1hroWs 5erv1e1Excep1on, IExcep1on {
// Re]ec1s kebSocke1 openIng handshake
1 ("websocket".equalsIgnoreCase(request.getHeader("Upgrade"))) {
response.sendError(h11p5erv1e1esponse.SC_NOT_IMPLEMENTED);
re1urn;
response.setCharacterEncoding("utf-8");
// Con1en1-Type headeI
response.setContentType("text/plain");
// 4ccess-Con1Io1-411o|-0IIgIn headeI
response.setHeader("Access-Control-Allow-Origin", "*");
Prn1Wr1er writer = response.getWriter();
// Jd
1na1 51rng id = UUID.randomUUID().toString();
writer.prn1(id);
writer.prn1(';');
// PaddIng
1or (n1 i = 0; i < 1024; i++) {
writer.prn1(' ');
writer.prn1(';');
writer.flush();
// S1aI1s asynchIonous node
// 4syncCon1ex1, 4syncLIs1eneI and 4syncEven1 aIe used 1oI asynchIonous opeIa1Ion
1na1 AsyncCon1ex1 ac = request.startAsync();
ac.setTimeout(5 * 60 * 1000);
2/24/12 EchoExample - jquery-stream - Echo Example - Comet Streaming JavaScript Library - Google Project
3/6 code.google.com/p/jquery-stream/wiki/EchoExample
ac.setTimeout(5 * 60 * 1000);
ac.addListener(neW AsyncLs1ener() {
pub1c vod onComplete(AsyncEven1 even1) 1hroWs IExcep1on {
asyncContexts.remove(id);
pub1c vod onTimeout(AsyncEven1 even1) 1hroWs IExcep1on {
asyncContexts.remove(id);
pub1c vod onError(AsyncEven1 even1) 1hroWs IExcep1on {
asyncContexts.remove(id);
pub1c vod onStartAsync(AsyncEven1 even1) 1hroWs IExcep1on {
);
// |anages 4syncCon1ex1 Ins1ances by 1he Id
asyncContexts.put(id, ac);
// P0ST ne1hod Is used 1o hand1e da1a sen1 by useI vIa 1he s1Iean
@Override
pro1ec1ed vod doPost(h11p5erv1e1eques1 request, h11p5erv1e1esponse response)
1hroWs 5erv1e1Excep1on, IExcep1on {
request.setCharacterEncoding("utf-8");
// FInds 4syncCon1ex1 Ins1ance by s1Iean Id
AsyncCon1ex1 ac = asyncContexts.ge1(request.getParameter("metadata.id"));
1 (ac == nu11) {
re1urn;
// C1ose Ieques1 neans 1ha1 bIo|seI c1osed 1hIs s1Iean
1 ("close".equals(request.getParameter("metadata.type"))) {
ac.complete();
re1urn;
51rng message = request.getParameter("message");
Prn1Wr1er writer = ac.getResponse().getWriter();
// Sends nessage
writer.prn1(message.length() + ";" + message + ";");
writer.flush();