Buongiorno a tutti :P e no, non è la solita richiesta di come si costruisce una Chat di quel tipo, quello di cui ho bisogno è tutt'al più il parere di qualche esperto nel campo per poter migliorare quella che è l'applicazione che ho sviluppato, mi spiego meglio:

- La Chat è sviluppata su un sistema di chiamate asincrone, il response che ne viene dato viene passato sotto il controllo di un valore, se il valore è di un dato tipo allore restituirà una formattazione del messaggio, se è di un altro una formattazione diversa.

Ora, con questo codice ho avuto due utenti che hanno riscontrato problemi sull'auto refresh della chat, lamentando problemi al visualizzare i messaggi nuovi, proprio per questo mi interesserebbe un parere di "ottimizzazione" dell'applicazione. Posto parte del codice.

codice:
<script language="JavaScript" type="text/javascript">
			var sendReq = getXmlHttpRequestObject();
			var receiveReq = getXmlHttpRequestObject();
			var lastMessage = 0;
			var mTimer;
			//Funzione che inizializza la chat
			function startChat() {
				//Setta il focus sul box di testo.
				document.getElementById('txt_message').focus();
				//Avvia la ricezione dei messaggi.
				getChatText();
			}		
			//Da le specifiche del browser su XmlHttpRequest
			function getXmlHttpRequestObject() {
				if (window.XMLHttpRequest) {
					return new XMLHttpRequest();
				} else if(window.ActiveXObject) {
					return new ActiveXObject("Microsoft.XMLHTTP");
				} else {
					document.getElementById('p_status').innerHTML = 'Status: Cound not create XmlHttpRequest Object.  Consider upgrading your browser.';
				}
			}
			
			//Mostra i messaggi ricevuti dal server
			function getChatText() {
				if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
					receiveReq.open("GET", 'getChat.php?chat=<?=$Stanza?>&last=' + lastMessage, true);
					receiveReq.onreadystatechange = handleReceiveChat; 
					receiveReq.send(null);
				}			
			}
			//Invia i messaggi al server.
			function sendChatText() {
				if (sendReq.readyState == 4 || sendReq.readyState == 0) {
					sendReq.open("POST", 'getChat.php?chat=<?=$Stanza?>&last=' + lastMessage, true);
					sendReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
					sendReq.onreadystatechange = handleSendChat; 
					var param = 'message=' + document.getElementById('txt_message').value;
					param += '&tipo=' + document.getElementById('tipo_mex').value;
					param += '&loca=' + document.getElementById('text_lcz').value;
					param += '&chat=<?=$Stanza?>';
					sendReq.send(param);
					document.getElementById('txt_message').value = '';
				}							
			}
			//Se il messaggio è stato inviato correttamente aggiorna la pagina.
			function handleSendChat() {
			//Pulisce il time esistente per non avere istanze multiple in corso.
				clearInterval(mTimer);
				getChatText();
			}
			function handleReceiveChat() {
				if (receiveReq.readyState == 4) {
					//Incentra la ricezione dei messaggi e visualizzazione sul div
					var chat_div = document.getElementById('div_chat');
					var response = eval("(" + receiveReq.responseText + ")");
					for(i=0;i < response.messages.message.length; i++) {
					if (response.messages.message[i].tipo == '2') {
					    chat_div.innerHTML += '<fieldset><legend>Master Fato</legend><div class="master" title="' + response.messages.message[i].user + '"><center>' +  response.messages.message[i].text + '</center></div></fieldset>';
						chat_div.scrollTop = chat_div.scrollHeight;
						} else if (response.messages.message[i].tipo == '3') {
						chat_div.innerHTML += '<fieldset><legend>Moderazione</legend><div class="mod"><center>' +  response.messages.message[i].text + '</center></div></fieldset>';
						chat_div.scrollTop = chat_div.scrollHeight;
						} else if (response.messages.message[i].tipo == '1') {
						chat_div.innerHTML += '<fieldset><legend><font class="chat_time">' +  response.messages.message[i].time + '</font>[img]' + response.messages.message[i].simbolo + '[/img]' + response.messages.message[i].user + '</legend><div class="azione">[' + response.messages.message[i].lcz + ']' + response.messages.message[i].text + '</div></fieldset>';
						chat_div.scrollTop = chat_div.scrollHeight;
						} else if ((response.messages.message[i].tipo == '4') && (response.messages.message[i].desti == '<?= $Login ?>')) {
						chat_div.innerHTML += '<div class="susstu"><font class="chat_time">' +  response.messages.message[i].time + '</font>' + response.messages.message[i].user + ' ti ha sussurrato:' + response.messages.message[i].text + '</div>';
						chat_div.scrollTop = chat_div.scrollHeight;
						} else if ((response.messages.message[i].tipo == '4') && (response.messages.message[i].user == '<?= $Login ?>')) {
						chat_div.innerHTML += '<div class="susstu"><font class="chat_time">' +  response.messages.message[i].time + '</font>' + response.messages.message[i].user + 'hai sussurrato a' + response.messages.message[i].desti + ':' + response.messages.message[i].text + '</div>';
						chat_div.scrollTop = chat_div.scrollHeight;
						}
						lastMessage = response.messages.message[i].id;
					}
					mTimer = setTimeout('getChatText();',1000); //Aggiorna la pagina ogni 2 secondi
				}
			}
			function blockSubmit() {
				sendChatText();
				return false;
			}
			function resetChat() {
				if (sendReq.readyState == 4 || sendReq.readyState == 0) {
					sendReq.open("POST", 'getChat.php?chat=<?=$Stanza?>&last=' + lastMessage, true);
					sendReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
					sendReq.onreadystatechange = handleResetChat; 
					var param = 'action=reset';
					sendReq.send(param);
					document.getElementById('txt_message').value = '';
				}							
			}
			function handleResetChat() {
				document.getElementById('div_chat').innerHTML = '';
				getChatText();
			}
			function getSusText() {
				document.getElementById('txt_message').value = '@Destinatario@Testo';
				}								
		</script>
	</head>
	<body onLoad="javascript:startChat();">

<div id="div_chat" style="height: 90%; width: 100%; overflow: auto; background-color: #C8B998;">

<form id="frmmain" name="frmmain" onSubmit="return blockSubmit();">
<input type="image" src="img/pulsanti/refresh.png" name="btn_get_chat" id="btn_get_chat" value="Refresh Chat" onClick="javascript:getChatText();" /><input type="image" src="img/pulsanti/descrizione.png" name="btn_get_desc" id="btn_get_desc" value="Descrizione Luogo" onClick="javascript:desc('descluogo.php?st=<?=$Stanza?>','Descrizione Luogo');">

			<select name="tipo_mex" id="tipo_mex">
            <option value="1">Normale</option>
            <option value="4" onClick="javascript:getSusText();">Sussurro</option>
            <? if ($_SESSION['master'] > '0') { ?>
            <option value="2">Master</option>
            <option value="3">Moderazione</option>
            <? } ?>
            </select><input type="text" id="text_lcz" title="Locazione" name="text_lcz" style="width:70px;">
			<input type="text" id="txt_message" name="txt_message" style="width: 400px;" />
			<input type="image" src="img/pulsanti/invia.png" name="btn_send_chat" id="btn_send_chat" value="Send" onClick="javascript:sendChatText();" />
			<input type="image" src="img/pulsanti/pulisci.png" size="4" title="Pulisci Chat" name="btn_reset_chat" id="btn_reset_chat" value="P" onClick="javascript:resetChat();" />
		</form>
Non so se può servire a questo punto anche la parte di codice php che da una risposta con json, nel caso lo posto ^^

Grazie comunque della disponibilità!