"Επιλεκτικό" refresh

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

"Επιλεκτικό" refresh

Δημοσίευση από Apostolis_38 » 30 Μάιος 2014 15:21

Καλησπέρα σε όλους.

Εχω φτιάξει μια εφαρμογή με την οποία ένας χρήστης μπορεί να στείλει ένα μήνυμα σε ένα άλλο χρήστη.
Απλά πράγματα, θέμα, περιγραφή και απάντηση.
Η εφαρμογή δουλεύει με τον τρόπο το id 1 στέλνει στο id 2.

Το πρόβλημα που δημιουργείται είναι το οτι ο id 2 πρέπει να κάνει κάποια κίνηση (refresh page, click σε άλλη σελίδα κ.λ.π.) ώστε να του εμφανιστεί η ειδοποίηση οτι έχει μήνυμα.

Υπάρχει κάποιος τρόπος να μπορεί να γίνει refresh η σελίδα που έχει ανοιχτή ο συγκεκριμένος χρήστης κι όχι για όλους τους χρήστες που βρίσκονται μέσα στην εφαρμογή;

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

"Επιλεκτικό" refresh

Δημοσίευση από geomagas » 30 Μάιος 2014 15:37

Μπορείς να κάνεις ένα polling για νέα μηυνύματα με javascript ανά τακτά χρονικά διαστήματα, χρησιμοποιώντας setInterval ή setTimeout.

Για δες αν σε βοηθάει αυτό.

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

"Επιλεκτικό" refresh

Δημοσίευση από alou » 30 Μάιος 2014 18:04

Ωραίο το chat geomagas ;) για την συγκεκριμένη υλοποίηση θα αρκούσε ένα απλό ajax timeout fn.

Μια ακόμα εύκολα υλοποιήσιμη εναλλακτική, real time, είναι με Firebase.
(δεν είναι ότι πιο ασφαλές υπάρχει αλλά δε σε νοιάζει για τη συγκεκριμένη περίπτωση)

Το έχω χρησιμοποιήσει για πειράματα με angular αλλά θα βρεις παραδείγματα και για jQuery υλοποιήσεις, που είναι σχετικά εύκολη διαδικασία.
http://jsfiddle.net/AbtDf/7/

Πχ, θα γράφεις μόνο τα id του παραλήπτη στη βάση αυτή (που παρακολουθείς real time για updates) και θα τσεκάρεις με current user, αν είναι ίδια θα κάνεις ένα css transform στο message indication που έχεις στην εφαρμογή.

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

"Επιλεκτικό" refresh

Δημοσίευση από geomagas » 30 Μάιος 2014 18:22

alou έγραψε:Ωραίο το chat geomagas ;) για την συγκεκριμένη υλοποίηση θα αρκούσε ένα απλό ajax timeout fn.
Ναι, είναι παλιά υλοποίηση, από την πρώτη μου (ημι-σοβαρή) επαφή με jQuery, όπως λέω και στην αρχή του άρθρου.
Αν το έφτιαχνα τώρα, θα το έκανα εντελώς διαφορετικά, από πολλές απόψεις.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

"Επιλεκτικό" refresh

Δημοσίευση από Apostolis_38 » 30 Μάιος 2014 18:33

@geomagas: Μέσες άκρες κατάλαβα.
Αλλά το είδα πολύ πρόχειρα. Θα το κοιτάξω πιο αναλυτικά αργότερα και θα ειδοποιήσω.

Η ιδιαιτερότητα πάντως είναι οτι η εφαρμογή μου δεν είναι stand alone όπως ένα chat room αλλά αποτελεί μέλος πολλών εφαρμογών στο site.
Οπότε αυτό που θέλω να αποφύγω είναι να γίνεται refresh ολόκληρο του site κάθε 3-4 λεπτά.
Πόσο μάλλον κάθε 3-4 δευτερόλεπτα. :(

@alou: Οταν λες "που παρακολουθείς real time για updates" εννοείς με cron job;

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

"Επιλεκτικό" refresh

Δημοσίευση από Apostolis_38 » 30 Μάιος 2014 18:56

Αλλη μια ενδιαφέρουσα υλοποίηση:
http://wpgyan.com/auto-refresh-wordpres ... -and-post/

Για να δούμε.

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

"Επιλεκτικό" refresh

Δημοσίευση από geomagas » 30 Μάιος 2014 19:29

Apostolis_38 έγραψε:Η ιδιαιτερότητα πάντως είναι οτι η εφαρμογή μου δεν είναι stand alone όπως ένα chat room αλλά αποτελεί μέλος πολλών εφαρμογών στο site.
Μα δεν εννοούσα να δεις όλο το chat room, μόνο το κομμάτι με το setTimeout για να καταλάβεις το concept.
Η λογική είναι ότι, σε τακτά χρονικά διαστήματα, εκτελείται μία function που ελέγχει για νέα μηνύματα (με ένα ajax call) και κάνει update το DOM αντί να κάνει refresh όλη τη σελίδα. Αυτός ο αλγόριθμος μπορεί άνετα να μπει σε ένα .js το οποίο θα το ενσωματώνεις σε όλες τις εφαρμογές σου.
Apostolis_38 έγραψε:Αλλη μια ενδιαφέρουσα υλοποίηση:
http://wpgyan.com/auto-refresh-wordpres ... -and-post/

Για να δούμε.
Μα αυτό κάνει refresh όλη τη σελίδα. Νόμιζα ότι αυτό είναι που θέλεις να αποφύγεις.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

"Επιλεκτικό" refresh

Δημοσίευση από Apostolis_38 » 30 Μάιος 2014 19:36

Δεν είπα αν μου κάνει ή όχι. :D
Ακόμα δεν έχω κάτσει να αναλύσω και τους δύο τρόπους. Ιδέες παίρνω.

Χμμμ. Ιδια απορία με πριν.
Το AJAX call ανα τακτά διαστήματα θα τρέχει με cron ή το κατάλαβα λάθος;

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

"Επιλεκτικό" refresh

Δημοσίευση από geomagas » 30 Μάιος 2014 20:01

Όχι, μιλάμε για τον client. Η setTimeout (ή η setInterval) θα καθορίσει κάθε πότε θα τρέχει.

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

"Επιλεκτικό" refresh

Δημοσίευση από alou » 30 Μάιος 2014 20:07

Apostolis_38 έγραψε:
@alou: Οταν λες "που παρακολουθείς real time για updates" εννοείς με cron job;
Όχι, το firebase θα κάνει μόνο του τη δουλειά και θα ενημερώσει αυτόματα με κάθε update των δεδομένων τη δική σου εφαρμογή.

Αν θες να το μάθεις σαν δυνατότητα είναι πολύ καλό, αν θες να κάνεις τη δουλειά σου πιο εύκολα (αλλά και με επιβάρυνση στον server, μια και θα τρέχουν ajax request από κάθε client Χ όσους έχουν active session ανά π.χ. 3 δευτερόλεπτα) πας με μια απλή λύση setTimeout( function(){ checkMessages(userId); }, 3000);
Τελευταία επεξεργασία από το μέλος alou την 30 Μάιος 2014 20:09, έχει επεξεργασθεί 1 φορά συνολικά.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

"Επιλεκτικό" refresh

Δημοσίευση από Apostolis_38 » 30 Μάιος 2014 20:09

Ok.
Θα τα κοιτάξω αναλυτικότερα και θα επανέλθω.

Ευχαριστώ πολύ.

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

"Επιλεκτικό" refresh

Δημοσίευση από jpk » 31 Μάιος 2014 05:57

Για πειραματιστείτε λίγο και με WebSockets ... έχουν χρήση πια (δηλαδή δουλεύει σχεδόν το ίδιο το client side σε όλλους τους browsers) και υπάρχει πιθανότητα να είναι η τεχνολογία που έρχεται για τέτοιου είδους ζητήματα.

Άβαταρ μέλους
Kainourios
Ruby Moderator
Δημοσιεύσεις: 504
Εγγραφή: 18 Μάιος 2005 16:20
Τοποθεσία: Κορυδαλλός
Επικοινωνία:

"Επιλεκτικό" refresh

Δημοσίευση από Kainourios » 31 Μάιος 2014 10:13

Με node.js και socket.io έχω ένα απλό παράδειγμα chat εδώ, όπου γίνονται τα updates αυτόματα χωρίς refresh https://github.com/johndel/simple-chat

Κάπως έτσι μπορείς να φτιάξεις ότι θες με events κλπ. Μπορείς να τρέχεις το node.js σαν εξωτερικό service και να χρησιμοποιήσεις τον κώδικα του index.html σε μια οποιαδήποτε εφαρμογή (π.χ. σε php).

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

"Επιλεκτικό" refresh

Δημοσίευση από alou » 31 Μάιος 2014 18:07

Αυτό ακριβώς + MongoDB κάνει σαν εξωτερικό έτοιμο service το Firebase Kainourios, δωρεάν μέχρι ενός σημείου και γι'αυτό το πρότεινα.

Άβαταρ μέλους
Kainourios
Ruby Moderator
Δημοσιεύσεις: 504
Εγγραφή: 18 Μάιος 2005 16:20
Τοποθεσία: Κορυδαλλός
Επικοινωνία:

"Επιλεκτικό" refresh

Δημοσίευση από Kainourios » 31 Μάιος 2014 21:29

Yeap I know alou, πολύ καλό και το firebase, χρησιμοποιώ κάτι παρόμοιο σε production ;). Απλά είπα να δείξω και την εναλλακτική μιας και το έφτιαξα πρόσφατα.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης