Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
META-INF.resources.net.java.dev.atmosphere.jquery-atmosphere.js Maven / Gradle / Ivy
jQuery.atmosphere = function ()
{
var activeRequest;
$(window).unload(function ()
{
if (activeRequest)
activeRequest.abort();
});
return {
version : 0.7 ,
response : {
status: 200 ,
responseBody : '' ,
headers : [],
state : "messageReceived" ,
transport : "polling" ,
push : [],
error: null ,
id : 0
},
request : {},
abordingConnection: false ,
logLevel : 'info' ,
callbacks: [],
activeTransport : null ,
websocket : null ,
killHiddenIFrame : null ,
subscribe: function (url, callback, request)
{
jQuery.atmosphere.request = jQuery.extend({
timeout: 300000 ,
method: 'GET' ,
headers: {},
contentType : "text/html;charset=ISO-8859-1" ,
cache: true ,
async: true ,
ifModified: false ,
callback: null ,
dataType: '' ,
url : url,
data : '' ,
suspend : true ,
maxRequest : 60 ,
lastIndex : 0 ,
logLevel : 'info' ,
requestCount : 0 ,
fallbackTransport : 'streaming' ,
transport : 'long-polling'
}, request);
logLevel = jQuery.atmosphere.request.logLevel || 'info' ;
if (callback != null ) {
jQuery.atmosphere.addCallback(callback);
jQuery.atmosphere.request.callback = callback;
}
if (jQuery.atmosphere.request.transport != jQuery.atmosphere.activeTransport) {
jQuery.atmosphere.closeSuspendedConnection();
}
jQuery.atmosphere.activeTransport = jQuery.atmosphere.request.transport;
if (jQuery.atmosphere.request.transport != 'websocket' ) {
jQuery.atmosphere.executeRequest();
} else if (jQuery.atmosphere.request.transport == 'websocket' ) {
if (!window.WebSocket) {
jQuery.atmosphere.log(logLevel, ["Websocket is not supported, using request.fallbackTransport" ]);
jQuery.atmosphere.request.transport = jQuery.atmosphere.request.fallbackTransport;
jQuery.atmosphere.executeRequest();
}
else {
jQuery.atmosphere.executeWebSocket();
}
}
},
closeSuspendedConnection : function () {
abordingConnection = true ;
if (activeRequest != null ) {
activeRequest.abort();
}
if (jQuery.atmosphere.websocket != null ) {
jQuery.atmosphere.websocket.close();
jQuery.atmosphere.websocket = null ;
}
abordingConnection = false ;
},
executeRequest: function ()
{
if (jQuery.atmosphere.request.transport == 'streaming' ) {
if ($.browser.msie) {
jQuery.atmosphere.ieStreaming();
return ;
} else if ((typeof window.addEventStream) == 'function' ) {
jQuery.atmosphere.operaStreaming();
return ;
}
}
if (jQuery.atmosphere.request.requestCount++ < jQuery.atmosphere.request.maxRequest) {
jQuery.atmosphere.response.push = function (url)
{
jQuery.atmosphere.request.callback = null ;
jQuery.atmosphere.publish(url, null , jQuery.atmosphere.request);
};
var request = jQuery.atmosphere.request;
var response = jQuery.atmosphere.response;
if (request.transport != 'polling' ) {
response.transport = request.transport;
}
var ajaxRequest;
var error = false ;
if ($.browser.msie) {
var activexmodes = ["Msxml2.XMLHTTP" , "Microsoft.XMLHTTP" ]
for (var i = 0 ; i < activexmodes.length; i++) {
try {
ajaxRequest = new ActiveXObject(activexmodes[i])
}
catch (e) {
}
}
} else if (window.XMLHttpRequest) {
ajaxRequest = new XMLHttpRequest();
}
if (request.suspend) {
activeRequest = ajaxRequest;
}
ajaxRequest.open(request.method, request.url, true );
ajaxRequest.setRequestHeader("X-Atmosphere-Framework" , jQuery.atmosphere.version);
ajaxRequest.setRequestHeader("X-Atmosphere-Transport" , request.transport);
ajaxRequest.setRequestHeader("X-Cache-Date" , new Date().getTime());
for (var x in request.headers) {
ajaxRequest.setRequestHeader(x, request.headers[x]);
}
if (!$.browser.msie) {
ajaxRequest.onerror = function ()
{
error = true ;
try {
response.status = XMLHttpRequest.status;
}
catch (e) {
response.status = 404 ;
}
response.state = "error" ;
jQuery.atmosphere.invokeCallback(response);
ajaxRequest.abort();
activeRequest = null ;
}
}
ajaxRequest.onreadystatechange = function ()
{
if (abordingConnection) return ;
var junkForWebkit = false ;
var update = false ;
if (ajaxRequest.readyState == 4 ) {
jQuery.atmosphere.request = request;
if (request.suspend && ajaxRequest.status == 200 ) {
jQuery.atmosphere.executeRequest();
}
if ($.browser.msie) {
update = true ;
}
} else if (!$.browser.msie && ajaxRequest.readyState == 3 && ajaxRequest.status == 200 ) {
update = true ;
} else {
clearTimeout(request.id);
}
if (update) {
if (request.transport == 'streaming' ) {
response.responseBody = ajaxRequest.responseText.substring(request.lastIndex, ajaxRequest.responseText.length);
if (request.lastIndex == 0 && response.responseBody.indexOf("" ;
var endOfJunkLenght = "" .length;
var junkEnd = response.responseBody.indexOf(endOfJunk) + endOfJunkLenght;
if (junkEnd != ajaxRequest.responseText.length) {
response.responseBody = response.responseBody.substring(junkEnd);
} else {
junkForWebkit = true ;
}
}
request.lastIndex = ajaxRequest.responseText.length;
if (junkForWebkit) return ;
} else {
response.responseBody = ajaxRequest.responseText;
}
if (response.responseBody.indexOf("parent.callback" ) != -1 ) {
var start = response.responseBody.indexOf("('" ) + 2 ;
var end = response.responseBody.indexOf("')" );
response.responseBody = response.responseBody.substring(start, end);
}
try {
response.status = ajaxRequest.status;
response.headers = ajaxRequest.getAllResponseHeaders();
}
catch (e) {
response.status = 404 ;
}
if (request.suspend) {
response.state = "messageReceived" ;
} else {
response.state = "messagePublished" ;
}
jQuery.atmosphere.invokeCallback(response);
}
}
ajaxRequest.send(request.data);
if (request.suspend) {
request.id = setTimeout(function ()
{
ajaxRequest.abort();
jQuery.atmosphere.subscribe(request.url, null , request);
}, request.timeout);
}
} else {
jQuery.atmosphere.log(logLevel, ["Max re-connection reached." ]);
}
},
operaStreaming: function ()
{
var url = jQuery.atmosphere.request.url;
var es = document.createElement('event-source' );
var response = jQuery.atmosphere.response;
jQuery.atmosphere.response.push = function (url)
{
jQuery.atmosphere.request.transport = 'polling' ;
jQuery.atmosphere.request.callback = null ;
jQuery.atmosphere.publish(url, null , jQuery.atmosphere.request);
};
es.setAttribute('src' , url);
if (opera.version() < 9.5 ) {
document.body.appendChild(es);
}
var operaCallback = function (event) {
if (event.data) {
var junkForWebkit = false ;
response.responseBody = event.data;
if (event.data.indexOf("