2017-11-18 13 views
0

PHP、mySQL、jQueryを使用してチャットアプリケーションを作成しました。それは私のためにうまくいきます。しかし今は、受信者がメッセージを見るたびに、「メッセージが表示される」機能を追加したいと考えています。または、WhatsAppで行われたような機能のような「ダニ」になります。問題は、これを達成する方法がわからないことです。jQueryを使用してチャットでメッセージの状態を確認する方法

ここでは、ユーザー間でメッセージの送受信を行うためのスクリプトについて説明します。私はこれを実装するために何をしなければなりませんか?

$ = jQuery; 
var currentID = null; 
var chatTimer = null; 
var oldhtml = ""; 

function fetch_data() { 
    $.ajax({ 
    url: "select.php", 
    method: "POST", 
    success: function(data) { 
     $('#live_data').html(data); 
    } 
    }); 
} 

function fetch_chat() { 
    $.ajax({ 
    url: "fetch_chat.php", 
    method: "POST", 
    data: { 
     id: currentID 
    }, 
    dataType: "text", 
    success: function(data) { 
     $("#chatbox").show(); 
     $('#messages').html(data); 
     $("div.area").show(); 
     if (oldhtml !== data) { 
     $('#messages').scrollTop($('#messages')[0].scrollHeight); 
     } 
     oldhtml = data; 
    } 
    }); 
} 

$(document).ready(function() { 
    fetch_data(); 

    setInterval(function() { 
    fetch_chat(); 
    }, 500); 

    $(document).on('click', '.first_name', function() { 
    currentID = $(this).data("id1"); 
    fetch_chat(); 
    }); 

    $("#sub").click(function() { 
    var text = $("#text").val(); 
    $.post('insert_chat.php', { 
     id: currentID, 
     msg: text 
    }, function(data) { 
     $("#messages").append(data); 
     $("#text").val(''); 
    }); 
    }); 
}); 
+0

「見た」の定義が明確ではありません。ビューポートで何かを確認する方法を見てみましょう。https://www.google.nl/search?q=jquery+is+visible+in+ビューポート – mplungjan

+0

受信者が受信したMessAgeを表示すると、受信者が表示されるように見えることを意味します。 –

+0

データモデルを詳細に解析する必要があります。今のところこの質問は広すぎるIMO – abigperson

答えて

0

あなたは、受信機がいくつかのメッセージをフェッチする場合、これらのメッセージのステータスが「見える」ように設定する必要があります 、あなたのメッセージテーブルにフラグを必要とする、またはしたい場合は、その後AJAX呼び出しでこれを行うことができます受信者はチャットボックスを開いたり、(チャットボックスの受信者クリックのような)起こったイベントを開きます。 チャットボックスでは、すべてのメッセージのIDを設定する必要があります。また、メッセージを取得したり、新しいメッセージをチェックするたびに、「見えない」メッセージをチェックしてメッセージのステータスをメッセージの横に送信する必要があります。 「目に見えない」と他のメッセージに

0

を「見」するために、これらのメッセージは、私はそれは(あなたのケースでは$(「#メッセージ」))チャットHTMLノードから見えるように持っている「見」されるメッセージのための前提と何らかの理由でそれが隠されている可能性があることを意味します(例:複数のチャットhtmlノードがアクティブである場合、一度にアクティブにすることができるか、ブラウザタブにフォーカスがないか、チャットhtmlノードのスクロールビュー...)。

なぜなら、イベントリスナーを追加して「アクティブ」状態になっているのかブラウザタブにフォーカスしているのかを聞いてみるのはなぜですか...条件が満たされたときに、データベース内のメッセージのid(この場合、各メッセージに一意のIDが設定されていると仮定します)を読み込みます。もちろん、メッセージステータスを取得するタイマーがあるはずです。送信側では、自分のIDでメッセージを選択し、そのメッセージをそのまま「ダニ」にして管理します。

+0

あなたはコードを提供できますか?可能なら –

関連する問題