Otimizar Código de Chat
Bom dia Galera!!!
Estou desenvolvendo (tentando) um sistema de atendimento online...
"Aparentemente" ele está funcionando certinho, só que acho que há erros de otimização...
Pois tem horas que ele envia tanto requisição ajax para o servidor que chega a travar o Xampp...
Segue código JS para darem uma olhada...
<script>
function inicia_chat(){
ultima_resposta = null;
var form = $('#dados_atendimento');
form.submit(function(){
return false;
});
form.ajaxSubmit({
url:"crud.php",
data: {acao: "iniciar_chat"},
success: function(resposta){
if(resposta == 0){
$("#mensagens_dados_atendimento").attr("class","");
$("#mensagens_dados_atendimento").addClass("aviso");
$("#mensagens_dados_atendimento").text("Preencha todos os campos corretamente!");
$(".mensagens_dados_atendimento").fadeIn("fast");
}else if(resposta == 1){
$("#mensagens_dados_atendimento").attr("class","");
$("#mensagens_dados_atendimento").addClass("erro");
$("#mensagens_dados_atendimento").text("Erro ao iniciar atendimento, tente novamente!");
$(".mensagens_dados_atendimento").fadeIn("fast");
}else if(resposta == 2){
$("#mensagens_dados_atendimento").attr("class","");
$("#mensagens_dados_atendimento").addClass("sucesso");
$("#mensagens_dados_atendimento").text("Iniciando atendimento...");
$(".mensagens_dados_atendimento").fadeIn("fast");
window.setTimeout(function(){
form.fadeOut("fast");
$("#barra_verde p").html("Estamos contactando um atendente, por favor aguarde...");
$("#carregando_chat").fadeIn("fast");
function verificaAtendente(){
$.ajax({
type: "POST",
url: "crud.php",
data: { acao: 'verifica_atendente' },
success: function ( resposta ){
if(resposta == 'erro'){
form.fadeIn("fast");
$("#barra_verde p").html("Preencha seus dados para iniciar o atendimento.");
$("#carregando_chat").fadeOut("fast");
$("#mensagens_dados_atendimento").attr("class","");
$("#mensagens_dados_atendimento").addClass("erro");
$("#mensagens_dados_atendimento").text("Erro ao iniciar atendimento, tente novamente!");
$(".mensagens_dados_atendimento").fadeIn("fast");
}else if(resposta == 0){
}else if(resposta != 'erro' && resposta != 0){
var result = resposta.split("&");
var nomeAtendente = result[0];
var dataInicio = result[1];
var horaInicio = result[2];
$("#barra_verde p").html("Você está online atualmente com <b>"+nomeAtendente+"</b>.");
$("#atendimento_iniciado p").html("Atendimento iniciado em <b>"+dataInicio+"</b> às <b>"+horaInicio+"</b>.");
$("#carregando_chat").fadeOut("fast");
$("#chat_online").fadeIn(500);
clearInterval(verifica_atendente);
}
}
});
}
var verifica_atendente = setInterval(function(){verifica_style_chat()}, 1000);
var verifica_atendente = setInterval(function(){verificaAtendente()}, 1000);
}, 2000);
}
}
});
}
function verifica_style_chat(){
var chat = $("#chat_online").attr("style");
if(chat == 'display:none'){
}else if(chat == ''){
atualiza_chat();
}
}
function atualiza_chat(){
window.setInterval(function(){
$.ajax({
type: "POST",
url: "crud.php",
data: { acao: 'atualiza_chat' },
success: function ( resposta ){
if (resposta != ultima_resposta){
$("#chat").html(resposta);
var chatScroll = $('#chat_scroll').height();
$('#chat_scroll').scrollTop(chatScroll);
ultima_resposta = resposta;
var audio = new Audio('img/alerta.mp3');
audio.play();
}
}
});
}, 500);
};
function envia_mensagem(){
var form = $('#escrever_mensagem');
form.submit(function(){
return false;
});
form.ajaxSubmit({
url:"crud.php",
data: {acao: "enviar_mensagem"},
success: function ( resposta ){
if(resposta == 'erro'){
}else if(resposta == 'sucesso'){
$("#mensagem").val('');
$("#mensagem").blur();
}
}
});
}
</script>
Quem tiver uma dica ou algo que posso melhorar, ficarei grato.
Obrigado!
Discussão (9)
Carregando comentários...