Как обновить sh Чат используя ajax - PullRequest
0 голосов
/ 16 января 2020

Я реализую текстовый чат на основе twilio api, у меня есть функции, которые выполняют следующие действия: загружают чат по клику, отправляют сообщение, получают последнее сообщение (установив интервал 1se c для обновления в режиме реального времени), и я добавлю проверить, не сброшены ли данные, не делать ничего другого, получить последнее сообщение, мне нужно получить значение данных текущего элемента, по которому щелкнули

, вот сценарий и журналы

[![<script type="text/javascript">
    $(document).ready(function(){
loadContacts();
displayChatOnclick();
setInterval(getlastmsg,1000);
}
  );
    //when the user clicks on contacts div fetch the chat history
    function displayChatOnclick(){   
$('#contacts').on('click','li',function() {
    var channel = $(this).closest('li').attr('data-channel');
    var name=$(this).closest('li').attr('data-name'); 
    console.log(channel);
    fetchChat(channel,name);
    sendmsg();
    //check if new msg is sent
});
}
    function fetchChat(channel,name){
$.ajax({
        url: 'loadchat.php',
        type: 'POST',
        data: { channel:channel,name:name },


success: function(msg) {
                       console.log(name);
                       $('#conversation').html(msg);
                       }
});    
}
function loadContacts(){
    $.ajax({
            url: 'loadcontacts.php',
            type: 'POST',


            success: function(msg) {
                                   $('#contacts').html(msg);
                                   }
          });    
}
//function to get the last msg 
function getlastmsg(){
  var channel = $('#contacts li').data('data-channel');
    var name=$('#contacts li').data('data-name'); 



    //check if channel and name is null do nothing else fetch last message

    console.log(name);




}
//function to send a msg
function sendmsg(){

      $("#send").click(function() {
          var channel=$(this).data('ch');
         var message=$("#msg").val();
              $('#msg').val('');

          console.log(msg);
        $.ajax({
            type: "POST",
            url: "sendmsg.php",
            data: {
                msg: message,
                channel:channel,

            },
            success: function(result) {
                console.log("sent");
           $('#b').append(result);
              }
        });
    });
}

</script>][1]][1]

Ответы [ 2 ]

1 голос
/ 16 января 2020

попробуйте

var $container = $("#contacts li");
    $container.load("rss-feed-data.php");
    var refreshId = setInterval(function()
    {
        $container.load('rss-feed-data.php');
    }, 9000);
1 голос
/ 16 января 2020

то, что вы делаете, это метод извлечения : setInterval - не лучшая идея, потому что он продолжает вызывать ваш сервер с изменениями или без них, представьте, если у вас есть 1000 пользователей, каждый из которых отправит запрос к серверу каждую секунду.

Я советую вам использовать pu sh метод , такой как SignalR . вот демо для чата, которое вы можете сделать с небольшим количеством строк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...