blob: 3c3557536d2c9593851f687f8596a9e813a701ff [file] [log] [blame]
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Chat Example - ActiveMQ Web Demos</title>
<link rel="stylesheet" href="chat.css" type="text/css">
<style type="text/css" media="screen">
@import url(styles/sorttable.css);
@import url(styles/type-settings.css);
@import url(styles/site.css);
@import url(styles/prettify.css);
</style>
<!--<script type="text/javascript" src="js/prototype.js"></script>-->
<!--<script type="text/javascript" src="js/amq_prototype_adapter.js"></script>-->
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/amq_jquery_adapter.js"></script>
<script type="text/javascript" src="js/amq.js"></script>
<script type="text/javascript" src="js/chat.js"></script>
<script type="text/javascript">
// Note, normally you wouldn't just add an onload function in this
// manner. In fact, you typically want to fire this method on the
// document.onready event, however this type of functionality is verbose
// and best left to the domain of your favorite js library.
//
// For example, in jQuery the following onload would be replaced with:
// jQuery(function() {
// org.activemq.Amq.init({ uri: 'amq' });
// org.activemq.Chat.init();
// }
window.onload = function() {
org.activemq.Amq.init({ uri: 'amq', logging: true, timeout: 45, clientId:(new Date()).getTime().toString() });
org.activemq.Chat.init();
};
</script>
</head>
<body>
<div class="white_box">
<div class="header">
<div class="header_l">
<div class="header_r">
</div>
</div>
</div>
<div class="content">
<div class="content_l">
<div class="content_r">
<div>
<!-- Banner -->
<div id="asf_logo">
<div id="activemq_logo">
<a style="float:left; width:280px;display:block;text-indent:-5000px;text-decoration:none;line-height:60px; margin-top:10px; margin-left:100px;"
href="http://activemq.apache.org/"
title="The most popular and powerful open source Message Broker">ActiveMQ</a>
<a style="float:right; width:210px;display:block;text-indent:-5000px;text-decoration:none;line-height:60px; margin-top:15px; margin-right:10px;"
href="http://www.apache.org/" title="The Apache Software Foundation">ASF</a>
</div>
</div>
<div class="top_red_bar">
<div id="site-breadcrumbs">
<a href="index.html" title="Home">Home</a>
</div>
<div id="site-quicklinks"><P>
<a href="http://activemq.apache.org/support.html"
title="Get help and support using Apache ActiveMQ">Support</a></p>
</div>
</div>
<table border="0">
<tbody>
<tr>
<td valign="top" width="100%" style="overflow:hidden;">
<div class="body-content">
<h1>Chat Example</h1>
<p>Welcome to the Ajax chat example</p>
<div id="chatroom">
<div id="chat"></div>
<div id="members"></div>
<div id="input">
<div id="join" class="hidden">
Username:&nbsp;
<input id="username" type="text"/>
<button id="joinB">Join</button>
</div>
<div id="joined" class="hidden">
Chat:&nbsp;
<input id="phrase" type="text" />
<button id="sendB">Send</button>
<button id="leaveB">Leave</button>
</div>
</div>
</div>
<p>
This Chat example creates an ActiveMQ broker using the configuration
information found in the <code>web.xml</code> file. There isn't much there.
Just a name-value parameter named <code>org.apache.activemq.brokerURL</code>
is assigned a value of <code>vm://localhost?broker.persistent=false</code>.
This is enough however to lazy-initialize the broker when it is needed.
</p>
<p>
The client leverages a javascript library <code>amq.js</code> to perform all
of the JMS-related client side code. This involves establishing a
communication pipeline to the JMS server. This pipeline uses a long-poll
connection to the server. All JMS communication will be received down this
pipe, and when the JMS server has no traffic to send, this pipeline will
patiently wait until there is new traffic or until it times out. If a
timeout does occur, the connection will reconnect to the server for another
round. (Of course you will want/need to use a server that supports
continuations in order for this to scale beyond a few hundred clients.)
</p>
<p>
The <code>chat.js</code> file contains the script to respond to the UI
interactions. It also talks to the <code>amq.js</code> file to send messages
and provides a message handler that will respond to incoming JMS messages.
</p>
<p>
There is no server-side state in this application. The client sets up a JMS
Topic on the server and attaches itself as a listener to this topic. From
that point, all messages that are sent to the topic are received by each
listener. Even the list of members in the chat room are the result of
clients replying to a ping request.
</p>
<p>
Please note that <code>amq.js</code> has been refactored to allow AJAX calls
to be made using any javascript library. Example adapter classes for <a href="http://jquery.com/">jQuery</a>
and <a href="http://www.prototypejs.org/">Prototype</a> have been provided.
</p>
</div>
</td>
<td valign="top">
<div class="navigation">
<div class="navigation_top">
<div class="navigation_bottom">
<H3>Useful Links</H3>
<ul class="alternate" type="square">
<li><a href="http://activemq.apache.org/"
title="The most popular and powerful open source Message Broker">Documentation</a></li>
<li><a href="http://activemq.apache.org/faq.html">FAQ</a></li>
<li><a href="http://activemq.apache.org/download.html">Downloads</a>
</li>
<li><a href="http://activemq.apache.org/discussion-forums.html">Forums</a>
</li>
</ul>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<div class="bottom_red_bar"></div>
</div>
</div>
</div>
</div>
<div class="black_box">
<div class="footer">
<div class="footer_l">
<div class="footer_r">
<div>
Copyright 2005-2012 The Apache Software Foundation.
(<a href="?printable=true">printable version</a>)
</div>
</div>
</div>
</div>
</div>
</div>
<div class="design_attribution"><a href="http://hiramchirino.com/">Graphic Design By Hiram</a></div>
</body>
</html>