Skip to content

Instantly share code, notes, and snippets.

@krhoyt
Created December 5, 2014 19:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save krhoyt/7df1e60655ff2e1b7add to your computer and use it in GitHub Desktop.
Save krhoyt/7df1e60655ff2e1b7add to your computer and use it in GitHub Desktop.
Boilerplate for Kaazing Gateway AMQP JavaScript client.
<html>
<head>
<title>AMQP Boilerplate</title>
<script src="http://localhost:8001/demo/amqp/javascript/WebSocket.js" type="text/javascript"></script>
<script src="http://localhost:8001/demo/amqp/javascript/AmqpClient.js" type="text/javascript"></script>
<script>
// Constants
var AMQP_CONSUMER_TAG = "start_tag";
var AMQP_EXCHANGE = "start_exchange";
var AMQP_PASSWORD = "guest";
var AMQP_QUEUE_NAME = "start";
var AMQP_ROUTING_KEY = "broadcast_key";
var AMQP_TYPE = "fanout";
var AMQP_USERNAME = "guest";
var AMQP_URL = "ws://localhost:8001/amqp";
var AMQP_VIRTUAL_HOST = "/";
// Messaging
var amqp_client = null;
var amqp_factory = null;
var consume_channel = null;
var publish_channel = null;
function arrayBufferToString( buffer )
{
return String.fromCharCode.apply( null, new Uint8Array( buffer ) );
}
function stringToArrayBuffer( value )
{
var buffer = null;
var view = null;
buffer = new ArrayBuffer( value.length );
view = new Uint8Array( buffer );
for( var i = 0; i < value.length; i++ )
{
view[i] = value.charCodeAt( i );
}
return buffer;
}
function doClientOpen()
{
console.log( "Connected." );
publish_channel = amqp_client.openChannel( doPublishOpen );
consume_channel = amqp_client.openChannel( doConsumeOpen );
}
function doConsumeOpen()
{
console.log( "Consume open." );
consume_channel.addEventListener( "declarequeue", function() {
console.log( "Queue declared." );
consume_channel.bindQueue( {
queue: AMQP_QUEUE_NAME,
exchange: AMQP_EXCHANGE,
routingKey: AMQP_ROUTING_KEY
} );
} );
consume_channel.addEventListener( "bindqueue", function() {
console.log( "Queue bound." );
consume_channel.consumeBasic( {
queue: AMQP_QUEUE_NAME,
consumerTag: AMQP_CONSUMER_TAG,
noAck: false
} );
} );
consume_channel.addEventListener( "consume", function() {
var body = null;
var properties = null;
console.log( "Consume ready." );
body = stringToArrayBuffer( "Hello world!" );
properties = new AmqpProperties();
publish_channel.publishBasic( {
body: body,
properties: properties,
exchange: AMQP_EXCHANGE,
routingKey: AMQP_ROUTING_KEY
} );
} );
consume_channel.addEventListener( "flow", function( event ) {
console.log( "Flow." );
} );
consume_channel.addEventListener( "close", function() {
console.log( "Consume closed." );
} );
consume_channel.addEventListener( "message", function( message ) {
var body = null;
var config = null;
body = arrayBufferToString( message.getBodyAsArrayBuffer() );
console.log( "Message:" );
console.log( body );
config = {
deliveryTag: message.args.deliveryTag,
multiple: true
};
consume_channel.ackBasic( config );
} );
consume_channel.declareQueue( {
queue: AMQP_QUEUE_NAME
} );
}
function doPublishOpen()
{
console.log( "Publish open." );
publish_channel.declareExchange( {
exchange: AMQP_EXCHANGE,
type: AMQP_TYPE
} );
publish_channel.addEventListener( "declareexchange", function() {
console.log( "Exchange declared." );
} );
}
function doWindowLoad()
{
var options = null;
console.log( "Load." );
options = {
url: AMQP_URL,
virtualHost: AMQP_VIRTUAL_HOST,
credentials: {
username: AMQP_USERNAME,
password: AMQP_PASSWORD
}
};
amqp_factory = new AmqpClientFactory();
amqp_client = amqp_factory.createAmqpClient();
amqp_client.connect( options, doClientOpen );
}
window.addEventListener( "load", doWindowLoad );
</script>
</head>
<body>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment