私はPHPとajaxでシンプルで生のチャットシステムを実装しています。基本的な機能は、新しい連絡先を追加して、基本的に電報やwhats'appのような、彼らとの会話をすることです。だから私はたくさんのチャットをしているし、今私は連絡先に新しいメッセージを通知する機能を実装します。私はこれについて何かを読んだが、私は多くを理解していなかった。それを作る方法、私は長いポーリングまたはwebsocketについて読んだが、これは新しいブラウザでのみ動作する。これは非常に悪いことですが、ajaxの機能では毎秒サーバーにリクエストを送信し、現在のチャット内のすべてのメッセージをリロードしますが、他のチャットはリロードせず、通知を視覚化できませんでした。私を助けてください:DDデータベースが更新されたときにアラートを送信する方法
答えて
これを行う方法の一般的なアイデアは、定期的にデータベースが変更されたかどうかを確認するために電話をかけることです。これにAJAXを使用して、例えばsetInterval(myAjaxFunction, 3000)
のような関数を呼び出して、3秒ごとにチェックすることができます。
データベースをチェックするには、テーブルのレコード数を調べて、最初に格納する方法があります。次のようなものがあります。
SELECT COUNT(*) FROM tableName
テーブル内のレコード数を取得します。これを最初に行い、それをJavaScriptに保存してから、AJAXを返してクエリの値を送信させます。 AJAX呼び出しの後success
で
if(queryResult != currentRecordCount){
currentRecordCount = queryResult;
sendNodification();
}
:次に、あなたのような何かを行うことができます。
これは、3秒ごとにチェックするオブザーバーを作成します。データベース内で何か変更があった場合は、sendNodification
関数を呼び出します。
はい、fanstastic私はそれのようなものを作ったが、この機能で、私は今どの行が変更され、特定のユーザーに通知を送信することはできません!私はメッセージを受け取った特定のユーザーに通知を送信したいからです!お返事ありがとうございます – samuele
@samueleあなたのIDは整数をインクリメントしているだけで、 'INSERT'ですか?もしそうなら、IDで新しいレコードを選択し、代わりに 'queryResult> currentRecordCount'と仮定して' WHERE(ID> queryResult - (queryResult - currentRecordCount)) 'を使用します。レコードには、これがどのユーザーになるかについての情報がありますか?もしそうなら、クエリでも同様のことをしたいでしょう( 'SELECT user FROM TblName WHERE ...')。 –
クライアントのテーブルをコピーしてデータベースからテーブルを取得し、ループスルーして相違点を確認することは、より強力なアプローチですが、サーバー全体でテーブル全体をプルするのは負担になります。しかし、レコードの量が比較的少ない場合、これは問題ありません。 –
- 1. firebaseデータベースが更新されたときに通知を送信する
- 2. アラートが表示されたときにデータベースにデータを更新します。
- 3. データベースが更新されたときにQTableViewを更新する方法は?
- 4. Firebaseデータベースが更新されたときに通知を送信する方法は?
- 5. テーブルが更新されたときにメールを送信
- 6. データベースが変更されたときにQTableViewを更新する方法
- 7. Quickblox IOSで送信されたメッセージを更新する方法
- 8. 内部HTMLが更新されたときにフォームが送信されない
- 9. データベースの値が変更されたときにメッセージをWebクライアントに送信
- 10. PHPMailは、ページが更新されたときに常に送信します
- 11. 入力されたテキストを使用してアラートを送信する方法
- 12. ページが更新されたとき、または戻るボタンがクリックされたときにフォームの再送信を防止する方法
- 13. ウェブサイトが更新されるたびにプッシュ通知を送信
- 14. Rspec:jsでフォームを送信するときにモデルが更新されない
- 15. 大きなcsvファイルが変更されたときにmysqlデータベースを更新する方法
- 16. ボタンがクリックされたときCodeigniterのデータベースを更新する
- 17. サーバーデータベースが更新されたときにsqliteデータベースを更新します。
- 18. Sqliteデータベースに新しいデータが追加されたときにrecyclerviewを更新する方法
- 19. SAS:テーブルが変更/更新された後でメールを送信
- 20. 送信ボタンがないときにフォームが送信されたかどうかを確認する方法
- 21. nodejsで更新された値を送信するには?
- 22. チェックボックスがクリックされたときに行値を送信する方法strutsアクションクラス
- 23. バインドされたリストの既存のアイテムが更新されたときにListViewを更新する方法
- 24. データベースが変更されたときにAndroid UIを更新する
- 25. 他のデータベースが更新されたときに別のmysqlデータベースに接続してデータベーステーブルを更新する
- 26. バックエンドデータが変更されたときにAngularJsのlocalforageを更新する方法
- 27. アイテムプロパティが変更されたときにObservableCollectionを更新する方法
- 28. ソースファイルが変更されたときにsconsビルドを更新する方法
- 29. iOSモデルが変更されたときにScrollViewを更新する方法は?
- 30. SQLiteが更新されたときにスピナーを更新する
これは広すぎます。唯一のことは何をするのかという基本的な考え方です。しかし一般的な考え方は、オブザーバーがデータベースの変更を定期的にチェックすることです(*レコードのCOUNTが変更されたかどうかを確認する*など)。 –
回答ありがとう、ありがとう、私は例えばevreryのような関数が必要だと言って、何かデータベースにチャンスがあり、何が変わったかによって、私は何かをします、この場合は通知を送信しますか? – samuele
私は、あなたが望むことをするための一般的なアプローチを説明した答えを追加しました(*はコメント*が長すぎます)。うまくいけばそれはあなたのアプリケーションにそのアプローチを実装することができます。 –