Created
December 5, 2014 19:19
-
-
Save krhoyt/7df1e60655ff2e1b7add to your computer and use it in GitHub Desktop.
Boilerplate for Kaazing Gateway AMQP JavaScript client.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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