|
ActiveMQ example source code file (webmq.js)
The ActiveMQ webmq.js source code/** * 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. */ // ----------------- // Original code by Joe Walnes // ----------------- function Connection(webmqUrl, id) { this.messageListeners = new Array() this.webmqUrl = webmqUrl if (id == null) { // TODO use secure random id generation id = Math.round(Math.random() * 100000000) } this.id = id // TODO don't start anything until document has finished loading var http = this.createHttpControl() this.getNextMessageAndLoop(webmqUrl, id, http) } Connection.prototype.getNextMessageAndLoop = function(webmqUrl, id, http) { http.open("GET", webmqUrl + "?id=" + id + "&xml=true", true) var connection = this http.onreadystatechange = function() { if (http.readyState == 4) { var ok try { ok = http.status && http.status == 200 } catch (e) { ok = false // sometimes accessing the http.status fields causes errors in firefox. dunno why. -joe } if (ok) { connection.processIncomingMessage(http) } // why do we have to create a new instance? // this is not required on firefox but is on mozilla //http.abort() http = connection.createHttpControl() connection.getNextMessageAndLoop(webmqUrl, id, http) } } http.send(null) } Connection.prototype.sendMessage = function(destination, message) { // TODO should post via body rather than URL // TODO specify destination in message var http = this.createHttpControl() http.open("POST", this.webmqUrl + "?id=" + this.id + "&body=" + message, true) http.send(null) } Connection.prototype.processIncomingMessage = function(http) { var destination = http.getResponseHeader("destination") var message = http.responseXML if (message == null) { message = http.responseText } //alert(message.responseText) for (var j = 0; j < this.messageListeners.length; j++) { var registration = this.messageListeners[j] if (registration.matcher(destination)) { registration.messageListener(message, destination) } } } Connection.prototype.addMessageListener = function(matcher, messageListener) { var wrappedMatcher if (matcher.constructor == RegExp) { wrappedMatcher = function(destination) { return matcher.test(destination) } } else if (matcher.constructor == String) { wrappedMatcher = function(destination) { return matcher == destination } } else { wrappedMatcher = matcher } this.messageListeners[this.messageListeners.length] = { matcher: wrappedMatcher, messageListener: messageListener } } Connection.prototype.createHttpControl = function() { // for details on using XMLHttpRequest see // http://webfx.eae.net/dhtml/xmlextras/xmlextras.html try { if (window.XMLHttpRequest) { var req = new XMLHttpRequest() // some older versions of Moz did not support the readyState property // and the onreadystate event so we patch it! if (req.readyState == null) { req.readyState = 1 req.addEventListener("load", function () { req.readyState = 4 if (typeof req.onreadystatechange == "function") { req.onreadystatechange() } }, false) } return req } if (window.ActiveXObject) { return new ActiveXObject(this.getControlPrefix() + ".XmlHttp") } } catch (ex) {} // fell through throw new Error("Your browser does not support XmlHttp objects") } Connection.prototype.getControlPrefix = function() { if (this.prefix) { return this.prefix } var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"] var o, o2 for (var i = 0; i < prefixes.length; i++) { try { // try to create the objects o = new ActiveXObject(prefixes[i] + ".XmlHttp") o2 = new ActiveXObject(prefixes[i] + ".XmlDom") return this.prefix = prefixes[i] } catch (ex) {} } throw new Error("Could not find an installed XML parser") } Other ActiveMQ examples (source code examples)Here is a short list of links related to this ActiveMQ webmq.js source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.