/** * Dual licensed under the Apache License 2.0 and the MIT license. * $Revision$ $Date: 2010-05-27 15:51:02 +0200 (Thu, 27 May 2010) $ */ (function($) { // Remap cometd JSON functions to jquery JSON functions org.cometd.JSON.toJSON = $.toJSON; org.cometd.JSON.fromJSON = $.secureEvalJSON; function _setHeaders(xhr, headers) { if (headers) { for (var headerName in headers) { if (headerName.toLowerCase() === 'content-type') { continue; } xhr.setRequestHeader(headerName, headers[headerName]); } } } // The default cometd instance $.cometd = new org.cometd.Cometd(); // Remap toolkit-specific transport calls $.cometd.LongPollingTransport = function() { var _super = new org.cometd.LongPollingTransport(); var that = org.cometd.Transport.derive(_super); that.xhrSend = function(packet) { return $.ajax({ url: packet.url, async: packet.sync !== true, type: 'POST', contentType: 'application/json;charset=UTF-8', data: packet.body, beforeSend: function(xhr) { _setHeaders(xhr, packet.headers); // Returning false will abort the XHR send return true; }, success: packet.onSuccess, error: function(xhr, reason, exception) { packet.onError(reason, exception); } }); }; return that; }; $.cometd.CallbackPollingTransport = function() { var _super = new org.cometd.CallbackPollingTransport(); var that = org.cometd.Transport.derive(_super); that.jsonpSend = function(packet) { $.ajax({ url: packet.url, async: packet.sync !== true, type: 'GET', dataType: 'jsonp', jsonp: 'jsonp', data: { // In callback-polling, the content must be sent via the 'message' parameter message: packet.body }, beforeSend: function(xhr) { _setHeaders(xhr, packet.headers); // Returning false will abort the XHR send return true; }, success: packet.onSuccess, error: function(xhr, reason, exception) { packet.onError(reason, exception); } }); }; return that; }; if (window.WebSocket) { $.cometd.registerTransport('websocket', new org.cometd.WebSocketTransport()); } $.cometd.registerTransport('long-polling', new $.cometd.LongPollingTransport()); $.cometd.registerTransport('callback-polling', new $.cometd.CallbackPollingTransport()); })(jQuery);