Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal!
Quero atualizar uma div somente quando houver mudança em um determinado campo no banco de dados, atualmente estou usando setTimeout(listComment, 3000);, mas quero mudar para websocket por questões de desempenho e o impacto que causa no tráfego. Procurei alguns exemplos na internet, mas só achei exemplos de chats, e não é o que eu preciso.
Alguém tem uma dica de como checar mudanças no bd com websocket somente em uma determinada div?
Gostaria de implementar no código abaixo:
<div id="output"></div>
<script>
function listComment() {
$.post("listar.php",
function (data) {
var data = JSON.parse(data);
var comments = "";
var replies = "";
var item = "";
var parent = -1;
var results = new Array();
var list = $("<ul class='outer-comment'>");
var item = $("<li>").html(comments);
for (var i = 0; (i < data.length); i++)
{
var commentId = data[i]['comment_id'];
comments = "<div class='comment-row'>" +
"<div class='comment-info'><span class='commet-row-label'>de</span> <span class='posted-by'>" + data[i]['comment_sender_name'] + " </span> <span class='commet-row-label'>às</span> <span class='posted-at'>" + data[i]['date'] + "</span></div>" +
"<div class='comment-text'>" + data[i]['comment'] + "</div>" +
"<div><a class='btn-reply' onClick='postReply(" + commentId + ")'>Responder</a></div>" +
"</div>";
var item = $("<li>").html(comments);
list.append(item);
var reply_list = $('<ul>');
item.append(reply_list);
listReplies(commentId, data, reply_list);
// }
}
setTimeout(listComment, 3000);
$("#output").html(list);
});
}
</script>
Muito Obrigado!>
10 minutos atrás, Alaerte Gabriel disse:
Qual sua dúvida nos exemplos que encontrou ?
Olá Alaerte.
Fiz uma alteração no meu post. Infelizmente nunca trabalhei com websockets e nos exemplos que encontrei, do qual foram apenas de chats, tive dificuldades em implementar na minha solução.
To atrás disso também e só encontro exemplos de chats, vou acompanhar seu post.
Conteudo migrado sem texto.
Fiz a primeira parte do segundo vídeo conforme abaixo. Estou usando Linux e salvei no meu servidor Apache local em: /var/www/html/websockets/:
<script>
var socketin = 'ws://127.0.0.1:80',
ws = new WebSocket(socketin);
ws.onopen = function(){
var data = {};
ws.send(JSON.stringify(data));
}
ws.onmessage = function(result){
var data = JSON.parse(result.data);
alert(JSON.stringify(data,null,2));
}
</script>
Ao executar** http://127.0.0.1/websockets/** nada acontece e quando vou no console do navegador, aparece a mensagem:
No Chrome:
**(index):3 WebSocket connection to 'ws://127.0.0.1/' failed: Error during WebSocket handshake: Unexpected response code: 200**
No Firefox 57:
**O Firefox não conseguiu estabelecer uma conexão com o servidor ws://127.0.0.1/**
Já tentei outras portas e não conecta. Como posso corrigir isso?
Qual sua dúvida nos exemplos que encontrou ?