€
$
₴
₽
EN
RU
Vmeste.EU
Лента
Каталог
Файлы
Форумы
Услуги
Основное
Radiotalk
Пользовательское
MPCHAT - CMS хостинг чатов для профессионалов
90 •
Посмотреть все темы
Вопрос по движку WebSocket
1
415
Денис
@FeNIX74
24.12.2012
Ребят в посте
https://vmeste.eu/forum?pid=302291#p302291
пункт 4.
У меня в скриптах вот такой код идет
Показать текст
function loadframes() {
if(document && parent.left && parent.left.document && document.getElementById('users') && document.getElementsByName('text0')[0]){
/* Последняя стадия загрузки */
if(interval) window.clearInterval(interval);
/* Подготовка фрейма привата */
if(parent.privatok==1) {document.getElementById("privatdiv").innerHTML='';}
/* Обнуление переменных */
loaded=0;
scrolled=0;
myhistory=myhistory1;
for(var i=0;i<rooms.length;i++) rooms[i][1]=0;
/* Подготовка таблицы никлиста */
uc = 0;
us = new Array();
ucc= new Array();
document.getElementById('users').innerHTML=userlist;
/* Загрузка движка сообщений */
document.getElementById("leftdiv").innerHTML='Загрузка ...';
if(ajaxon) {ajax(1); return;}
parent.left.location.href='irc2.html?'+myid+'&r='+Math.random();
/* Загрузка актуального стиля, если был изменён */
if(mystyle) window.setTimeout("setstyle(mystyle);",3000);
/* Проверка непрерывного соединения */
interval=window.setTimeout(
'if(location.port!=88 && confirm("Проблема потокового соединение через стандартный порт. Нажмите ОК для перехода на другой порт или Отмена для дальнейших действий.")) location.href="http://"+location.hostname+":88"+location.pathname+"?"+yourkey; '+
'else if(confirm("Нажмите OK если хотите перейти на ажакс движок чата или Отмена для дальнейших действий.")) ajax(1); '+
'else if(confirm("Нажмите ОК чтобы узнать о проблеме с движками или Отмена для продолжения загрузки потокового движка.")) parent.left.location.href="index.php?inc=problem";'
,1000*15); /* Время для проверки потокового движка 15 сек */
}
}
var interval=window.setInterval("loadframes()",100);
var ajaxon=0;
var http = null;
var ajaxreq=0;
function ajax(start) {
if(ajaxreq) return; ajaxreq=1;
var file="./ajax.html?sess="+myid+"&r="+Math.random(1);
if(start) {ajaxon=1; file+="&start=1";
document.getElementById("leftdiv").innerHTML="";
window.setInterval("ajax()",15000);
}
//Mozilla, Opera, Safari, IE7, else IE6
if (typeof XMLHttpRequest != 'undefined') {http = new XMLHttpRequest();}
else {
try {http = new ActiveXObject("Msxml2.XMLHTTP");}
catch(e) {try {http = new ActiveXObject("Microsoft.XMLHTTP");} catch(e) {http = null;}}
}
if (http) {
http.open('GET', file, true);
http.onreadystatechange = new Function("if(http.readyState != 4) return;parent.left.document.write(http.responseText);ajaxreq=0;");
http.send(null);
}}
Как мне сделать пункт 4 ???
извиняюсь за тупость... 🐱👤
Заранее спасибо
2615
Сергей
@Pegass
24.12.2012
красное удалить синее вставить
function loadframes() {
if(document && parent.left && parent.left.document && document.getElementById('users') && document.getElementsByName('text0')[0]){
/* Последняя стадия загрузки */
if(interval) window.clearInterval(interval);
/* Подготовка фрейма привата */
if(parent.privatok==1) {document.getElementById("privatdiv").innerHTML='';}
/* Обнуление переменных */
loaded=0;
scrolled=0;
myhistory=myhistory1;
for(var i=0;i<rooms.length;i++) rooms[i][1]=0;
/* Подготовка таблицы никлиста */
uc = 0;
us = new Array();
ucc= new Array();
document.getElementById('users').innerHTML=userlist;
/* Загрузка движка сообщений */
document.getElementById("leftdiv").innerHTML='Загрузка ...';
if(ajaxon) {ajax(1); return;}
parent.left.location.href='irc2.html?'+myid+'&r='+Math.random();
/* Загрузка актуального стиля, если был изменён */
if(mystyle) window.setTimeout("setstyle(mystyle);",3000);
/* Проверка непрерывного соединения */
interval=window.setTimeout(
'if(location.port!=88 && confirm("Проблема потокового соединение через стандартный порт. Нажмите ОК для перехода на другой порт или Отмена для дальнейших действий.")) location.href="http://"+location.hostname+":88"+location.pathname+"?"+yourkey; '+
'else if(confirm("Нажмите OK если хотите перейти на ажакс движок чата или Отмена для дальнейших действий.")) ajax(1); '+
'else if(confirm("Нажмите ОК чтобы узнать о проблеме с движками или Отмена для продолжения загрузки потокового движка.")) parent.left.location.href="index.php?inc=problem";'
,1000*15); /* Время для проверки потокового движка 15 сек */
}
}
var interval=window.setInterval("loadframes()",100);
/* Проверка непрерывного соединения */
interval=window.setTimeout(
'if(engine_on!="ajax" && !ajaxon) {wr("<font color=red>Проблема подключения к потоковому движку на порту "+engine_port+". Пробуем подключиться через <b>ajax</b> движок ...</font>"); window.setTimeout("engine_on=\\"ajax\\"; loadframes();",5000);} ' +
'else wr("<font color=red>Не удалось подключиться к движку чата, вероятно Ваш браузер просто не поддерживает новые технологии.<br>Попробуйте использовать новый современный браузер <a href=http://google.com/chrome target=_blank>Google Chrome</a>.</font>");'
,1000*10); /* Время для проверки потокового движка 10 сек */
/* Загрузка движка сообщений */
document.getElementById("leftdiv").innerHTML='Загрузка ...';
loadengine();
}
var interval=window.setTimeout('wr("<font color=red>Чат не был загружен в установленное время, вероятно некоторые элементы страницы грузятся очень долго, <a href=# onclick=\'loadframes(); return false;\'>нажмите для продолжения</a> ...</font>");',10000);
var ajaxon=0;
var http = null;
var ajaxreq=0;
function ajax(start) {
if(ajaxreq) return; ajaxreq=1;
var file="./ajax.html?sess="+myid+"&r="+Math.random(1);
if(start) {ajaxon=1; file+="&start=1";
document.getElementById("leftdiv").innerHTML="";
window.setInterval("ajax()",15000);
}
//Mozilla, Opera, Safari, IE7, else IE6
if (typeof XMLHttpRequest != 'undefined') {http = new XMLHttpRequest();}
else {
try {http = new ActiveXObject("Msxml2.XMLHTTP");}
catch(e) {try {http = new ActiveXObject("Microsoft.XMLHTTP");} catch(e) {http = null;}}
}
if (http) {
http.open('GET', file, true);
http.onreadystatechange = new Function("if(http.readyState != 4) return;parent.left.document.write(http.responseText);ajaxreq=0;");
http.send(null);
}}
415
Денис
@FeNIX74
24.12.2012
Pegass
пишет:
красное удалить синее вставить
function loadframes() {
if(document && parent.left && parent.left.document && document.getElementById('users') && document.getElementsByName('text0')[0]){
/* Последняя стадия загрузки */
if(interval) window.clearInterval(interval);
/* Подготовка фрейма привата */
if(parent.privatok==1) {document.getElementById("privatdiv").innerHTML='';}
/* Обнуление переменных */
loaded=0;
scrolled=0;
myhistory=myhistory1;
for(var i=0;i<rooms.length;i++) rooms[i][1]=0;
/* Подготовка таблицы никлиста */
uc = 0;
us = new Array();
ucc= new Array();
document.getElementById('users').innerHTML=userlist;
/* Загрузка движка сообщений */
document.getElementById("leftdiv").innerHTML='Загрузка ...';
if(ajaxon) {ajax(1); return;}
parent.left.location.href='irc2.html?'+myid+'&r='+Math.random();
/* Загрузка актуального стиля, если был изменён */
if(mystyle) window.setTimeout("setstyle(mystyle);",3000);
/* Проверка непрерывного соединения */
interval=window.setTimeout(
'if(location.port!=88 && confirm("Проблема потокового соединение через стандартный порт. Нажмите ОК для перехода на другой порт или Отмена для дальнейших действий.")) location.href="http://"+location.hostname+":88"+location.pathname+"?"+yourkey; '+
'else if(confirm("Нажмите OK если хотите перейти на ажакс движок чата или Отмена для дальнейших действий.")) ajax(1); '+
'else if(confirm("Нажмите ОК чтобы узнать о проблеме с движками или Отмена для продолжения загрузки потокового движка.")) parent.left.location.href="index.php?inc=problem";'
,1000*15); /* Время для проверки потокового движка 15 сек */
}
}
var interval=window.setInterval("loadframes()",100);
/* Проверка непрерывного соединения */
interval=window.setTimeout(
'if(engine_on!="ajax" && !ajaxon) {wr("<font color=red>Проблема подключения к потоковому движку на порту "+engine_port+". Пробуем подключиться через <b>ajax</b> движок ...</font>"); window.setTimeout("engine_on=\\"ajax\\"; loadframes();",5000);} ' +
'else wr("<font color=red>Не удалось подключиться к движку чата, вероятно Ваш браузер просто не поддерживает новые технологии.<br>Попробуйте использовать новый современный браузер <a href=http://google.com/chrome target=_blank>Google Chrome</a>.</font>");'
,1000*10); /* Время для проверки потокового движка 10 сек */
/* Загрузка движка сообщений */
document.getElementById("leftdiv").innerHTML='Загрузка ...';
loadengine();
}
var interval=window.setTimeout('wr("<font color=red>Чат не был загружен в установленное время, вероятно некоторые элементы страницы грузятся очень долго, <a href=# onclick=\'loadframes(); return false;\'>нажмите для продолжения</a> ...</font>");',10000);
var ajaxon=0;
var http = null;
var ajaxreq=0;
function ajax(start) {
if(ajaxreq) return; ajaxreq=1;
var file="./ajax.html?sess="+myid+"&r="+Math.random(1);
if(start) {ajaxon=1; file+="&start=1";
document.getElementById("leftdiv").innerHTML="";
window.setInterval("ajax()",15000);
}
//Mozilla, Opera, Safari, IE7, else IE6
if (typeof XMLHttpRequest != 'undefined') {http = new XMLHttpRequest();}
else {
try {http = new ActiveXObject("Msxml2.XMLHTTP");}
catch(e) {try {http = new ActiveXObject("Microsoft.XMLHTTP");} catch(e) {http = null;}}
}
if (http) {
http.open('GET', file, true);
http.onreadystatechange = new Function("if(http.readyState != 4) return;parent.left.document.write(http.responseText);ajaxreq=0;");
http.send(null);
}}
Сделал так чат завис висит надпись Загрузка и все
415
Денис
@FeNIX74
24.12.2012
Показать текст
<script>
var chatlogin='rai';
/* Функция - перенаправитель команд */
function f(var1,var2,var3,var4,var5,var6,var7,var8,var9,var10,var11,var12,var13,var14) {
parent.f(var1,var2,var3,var4,var5,var6,var7,var8,var9,var10,var11,var12,var13,var14);
}
/* Задаём изначальное содержимое перед сообщениями */
parent.document.getElementById("leftdiv").innerHTML="<br>";
</script>
<body class=header-body onload="loadengine(); return; re=confirm('Извините, связь прервалась! Перезагрузить чат?'); if(re) parent.loadframes();">
<!--Этот фаил должен быть не больше 1кб, ниже будет загрузка сообщений-->
<!--ВНИМАНИЕ!!! КОД КОТОРЫЙ ИДЁТ НИЖЕ ИЗМЕНЯТЬ МОЖНО ТОЛЬКО ЕСЛИ ВЫ ПРОФИ-->
<iframe id=leftframe width=0 height=0 style="display:none;"></iframe>
<div id=leftdiv></div>
<script>
/* [NEW ENGINES - обработка и функции новых движков] */
var engine="";
var engine_url="";
var engine_uri="";
var engine_on="";
var engine_host=parent.engine_host;
var engine_port=parent.engine_port;
var engine_path=parent.engine_path;
var myid=parent.myid;
/* Обработчик ошибок подключения */
function disconnect(type,error) {
if(type=="io") {wr("<font color=red>Ошибка подключения к серверу "+error+", подождите окончания загрузки ...</font>"); }
else if(type=="security") {return; wr("<font color=red>Ошибка безопасности при подключении к серверу "+error+", подождите окончания загрузки ...</font>"); }
else if(!interval) {
wr("<font color=red>По какой то причине Вы были отключены от сервера, переподключение через <b id=restarter>10</b> секунд ...</font>");
interval=window.setInterval("var obj=document.getElementById('restarter'); obj.innerHTML=obj.innerHTML-1; if(obj.innerHTML<=0) loadframes();",1000);
}
}
/* Анализ полученной строки и передача в функцию f() */
function r(msg) {
if(msg=="started") {document.getElementById("leftdiv").innerHTML=""; return;}
if(msg=="loaded") {parent.up(); parent.loaded=1; return;}
if(msg=="disconnected") {if(ajaxon) window.clearInterval(ajaxon); disconnect(); return;}
var a=msg.split('|');
f(a[0]*1,a[1]*1,a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14]);
}
/* Обработчик AJAX подключений */
var ajaxon=0;
var ajaxreq=0;
function ajax(url,post) {
// Opera 8.0+, Firefox, Safari, Chrome, IE7+ else get ActiveX for IE5-IE6
if (typeof XMLHttpRequest == "undefined") XMLHttpRequest = function () {
try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch (e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch (e) {}
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
return;
};
if(!XMLHttpRequest) {alert("Ваш браузер не поддерживает технологию Ajax, попробуйте обновить браузер!"); return false;}
var http = new XMLHttpRequest();
//IE8+ Crossdomain fix
var XDR=0; if(!engine_path && window.XDomainRequest) {http = new XDomainRequest();XDR=1;}
//check run and get request
if(!url) url=engine_url+"&r="+Math.random();
if(ajaxreq) return; ajaxreq=1;
http.open('GET', url, true);
var response = function() {
if(http.readyState && http.readyState != 4) return;
var msg=http.responseText;
eval(msg.replace(new RegExp('<scr'+'ipt>','gm'),'').replace(new RegExp('</scr'+'ipt>','gm'),''));
ajaxreq=0;
}
if(XDR) http.onload = response;
else http.onreadystatechange = response;
http.send(post);
}
/* Обработчик Flash подключений */
var noheaders=1;
var myObject = {
start:0,
last:"",
loaded : function() {this.flashMovie = document.getElementById("socket");this.connect(engine_host,engine_port);},
connected : function() {this.start=0; this.last=""; this.write("GET "+engine_uri+"&noheaders="+noheaders+" HTTP/1.1\r\n\r\n");},
disconnected : function() {disconnect();},
ioError: function(msg) {disconnect("io",msg);},
securityError: function(msg) {disconnect("security",msg);},
connect : function(server, port) {this.flashMovie.connect(server, port);},
write : function(msg) {this.flashMovie.write(msg);},
close : function() {if(this.flashMovie) this.flashMovie.close();},
receive: function(msg) {
//проверка начала HTML ответа
if(!this.start && !noheaders) {
var a=msg.split('\r\n\r\n');
if(a.length>1) {msg=msg.substr(a[0].length+4); this.start=1;}
else return;
}
//фильтрация и запуск скриптов
msg=this.last+msg;
var a=msg.split('\n');
for(var i=0;i<a.length-1;i++) { if(!a[i]) continue;
eval(a[i].replace(new RegExp('<scr'+'ipt>','gm'),'').replace(new RegExp('</scr'+'ipt>','gm'),''));
}
this.last=a[a.length-1];
}
};
document.write("<scr"+"ipt src=http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js></scr"+"ipt>");
/* Обработчик HTML5 подключений */
var onmess = function(e) {r(e.data);};
if (typeof window.addEventListener != 'undefined') window.addEventListener('message', onmess, false);
else if (typeof window.attachEvent != 'undefined') window.attachEvent('onmessage', onmess);
/* Определение и загрузка движков чата */
var ws="";
function loadengine() {
//fix for reconnect
if(ws) ws.onclose = function(e) {};
if(engine=="postMessage") document.getElementById("leftframe").src="about:blank";
if(engine=="flash" && myObject) myObject.close();
if(ajaxon) window.clearInterval(ajaxon);
//load new engine
var flashver=0; var ver = swfobject.getFlashPlayerVersion(); if(ver["major"]) flashver=ver['major'] +"."+ ver['minor'] +"."+ ver['release'];
var browser=navigator.userAgent.match(/(Chrome|Firefox|Opera|Safari|MSIE|K-Meleon)( |\/)(\w+\.\w+)/i); if(!browser) var browser=new Array('','unknown','',0);
if(!engine_on) {
if(window.WebSocket && (!window.chrome || browser[3]>=16)) engine_on="WebSocket";
else if(window.postMessage && window.chrome) engine_on="postMessage";
else if(flashver) engine_on="flash";
else engine_on="ajax";
}
wr("<font color=green>Браузер <b>"+browser[1]+"/"+browser[3]+"</b>, версия <b>Flash "+flashver+"</b>, движок <b>"+engine_on+"</b>, подключение ...</font>");
engine=engine_on;
engine_uri="/?chat="+chatlogin+"&sess="+myid+"&engine="+engine;
engine_url="http://"+engine_host+":"+engine_port+engine_uri;
if(engine=="WebSocket") {
ws = new WebSocket("ws://"+engine_host+":"+engine_port+engine_uri);
ws.onopen = function(e) {};
ws.onmessage = function(e) {eval(e.data.replace(new RegExp('<scr'+'ipt>','gm'),'').replace(new RegExp('</scr'+'ipt>','gm'),''));};
ws.onerror = function(e) {disconnect("io","websocket");};
ws.onclose = function(e) {window.setTimeout("disconnect();",1000);};
}
if(engine=="postMessage") document.getElementById("leftframe").src=engine_url+"&r="+Math.random();
if(engine=="flash") {
if(!document.getElementById('socket')) {var newdiv = document.createElement('div'); newdiv.setAttribute('id','socket'); document.body.appendChild(newdiv);}
swfobject.embedSWF("socket.swf?"+Math.random(), "socket", "0", "0", "9", "expressInstall.swf", {scope:"myObject"}, {allowscriptaccess:"always"});
window.onunload=function(){myObject.close();}
}
if(engine=="ajax") {
if(engine_path) engine_url="/"+engine_path+"?chat="+chatlogin+"&sess="+myid+"&engine="+engine;
if(ajaxon) window.clearInterval(ajaxon);
ajax(engine_url+"&start=1&r="+Math.random());
ajaxon=window.setInterval('ajax(engine_url+"&r="+Math.random());',10000);
}
}
</script>
Это то что у меня в irc2.html
20090
Dimitry
@Dimitry
24.12.2012
irc2.html используется только в фреймовых версиях 3-4, а вебсокет предназначен только для 5й версии - нельзя перепрыгивать обновления движков.
415
Денис
@FeNIX74
24.12.2012
Dimitry
пишет:
irc2.html используется только в фреймовых версиях 3-4, а вебсокет предназначен только для 5й версии - нельзя перепрыгивать обновления движков.
Понятно)