Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

close event σε web form

Îåêßíçóå áðü ôï ìÝëïò alex_VB. Τελευταία δημοσίευση από το μέλος anjelinio στις 24-11-2009, 12:53. Υπάρχουν 11 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  20-11-2009, 19:34 55366

    close event σε web form

    Καλησπέρα!

    Υπάρχει κάποιος τρόπος να πιάσω το close event μιας web εφαρμογής. Δηλαδή όταν κάποιος κλείνει από το Χ τον internet explorer να ενημερώνεται η βάση μου οτι ο χρήστης είναι offline.


    www.myautos.gr
  •  20-11-2009, 20:12 55367 σε απάντηση της 55366

    Απ: close event σε web form

    Μπορείς στο window.unload να προσθέσεις ένα call στην __doPostBack με συγκεκριμένα arguments, που πρέπει όμως μετά εσύ να τα χειριστείς (αν μιλάμε για ASP.NET). Άλλιως πρέπει να κάνεις track το κάθε SeesionID που δημιοργείται, από το global.asax(αν είναι SessionState InProc)
  •  20-11-2009, 22:44 55368 σε απάντηση της 55366

    Απ: close event σε web form

    alex_VB:
    Υπάρχει κάποιος τρόπος να πιάσω το close event μιας web εφαρμογής. Δηλαδή όταν κάποιος κλείνει από το Χ τον internet explorer να ενημερώνεται η βάση μου οτι ο χρήστης είναι offline.

    Γενικά οι web εφαρμογές δεν μπορούν να καταλάβουν πότε ο χρήστης κλείνει το παράθυρο του web browser. Για αυτό και το session του χρήστη στο web server κλείνει στα 20' λεπτά μετά την τελευταία επικοινωνία του browser με την web εφαρμογή.

    Μπορεί κάποιος να προσπαθήσει, να το κάνει με Javascript, αλλά είναι πολύ περισμένες οι επιλογές που έχει, μιας και τα events του web browser θα μπορείς να τα χειριστείς εφόσον ο χρήστης βλέπει σελίδα του website σου. Οπότε αν ο υποθέσουμε ότι χειρίζεσαι το event που ο χρήστης θα κλείσει το παράθυρο του browser, θα πάρεις ειδοποίηση. Αν φύγει και πάει σε μια σελίδα έξω από το site σου και μετά κλείσει το παράθυρο δεν θα το καταλάβεις. Αν προσπαθήσεις να χειριστείς το event που ο web browser αλλάζει σελίδα, θα έχεις επικοινωνία με τον web server δύο φορές για κάθε σελίδα - μία για την πάρεις και μία να τον ειδοποιείς ότι φεύγεις από αυτή τη σελίδα - δεν είναι και πολύ πρακτικό μας και ουσιαστικά μεγαλώνεις τον αριθμό των requests προς τον server σου, χωρίς να έχεις ουσιαστικό όφελος.

    Για αυτό το λόγο, στις web εφαρμογές για να γίνει κάτι τέτοιο, καλό είναι να παίζει κάποιος με τα session του χρήστη - όχι απαραίτητα το user session που του φτιάχνει το web application, αλλά πάντα υπάρχει αυτό που φτιάχνει ο web server και το δίνει στο χρήστη με την μορφή cookie και το κρατάει όση ώρα ο χρήστης είναι συνδεδεμένος.

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  21-11-2009, 00:29 55369 σε απάντηση της 55368

    Απ: close event σε web form

    Ευχαριστώ πολύ παιδιά!

     


    www.myautos.gr
  •  21-11-2009, 01:18 55370 σε απάντηση της 55369

    Απ: close event σε web form

    Αλήθεια, μια και το συζητάμε, με καμία περίεργη τεχνική polling δεν θα μπορούσε να επιτευχθεί αυτό;



    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  21-11-2009, 01:23 55371 σε απάντηση της 55370

    Απ: close event σε web form

    cap:
    Αλήθεια, μια και το συζητάμε, με καμία περίεργη τεχνική polling δεν θα μπορούσε να επιτευχθεί αυτό;

    Αν ήθελες να σε πληρώνουν με το δευτερόλεπτο για τον χρόνο που έμεναν στο site σου... Big Smile

    Αλλά και πάλι, αυτό μπορείς να το κάνεις πολύ πιο εύκολα, αν έβγαζες ένα pop-up παράθυρο, έτρεχες την εφαρμογή σου εκεί, και όταν ο χρήστης έπρεπε να κλείσει το παράθυρο για να φύγει...

     

    George J.

     


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  21-11-2009, 09:22 55375 σε απάντηση της 55371

    Απ: close event σε web form

    τι είναι το polling ρε παιδιά?


    www.myautos.gr
  •  21-11-2009, 11:14 55376 σε απάντηση της 55375

    Απ: close event σε web form

    alex_VB:
    τι είναι το polling ρε παιδιά?

    Τον ακριβή όρο του Polling (computer science) μπορείς να τον δεις στο Wikipedia. Για να φανταστείς τι κάνει περίπου σε μια εφαρμογή, σκέψου την εφαρμογή chat που έχει το Facebook για να μιλάνε τα μέλη τους μεταξύ τους. Αυτό το service περίπου κάθε 20" περίπου ενημερώνει το server, για την κατάσταση του μέλους και βλέπει για τυχόν μηνύματα που μπορεί να έχει.

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  21-11-2009, 18:28 55406 σε απάντηση της 55376

    Απ: close event σε web form

    Και η ερώτηση που έκανα και ανέφερε polling αφορούσε ακριβώς αυτό: Κάτι που να ενημερώνει συνεχώς το server αν είμαστε ακόμα logged in.

    Γιώργο, αυτό με το νέο παράθυρο δεν το πολυέπιασα, βασικά θα μπορούσε να υλοποιηθεί κάτι που να είναι "αόρατο" στον χρήστη και παρ'όλα αυτά να μπορει να ελέγξει καλύτερα το πότε πραγματικα τελείωσε το user session. Βεβαια, πολυέξοδο, δεν λέω, αλλά για περιπτώσεις οπου έχει σημασία το πότε ο χρήστης τελικά φεύγει από το site, ίσως να έχει αξία. Το θέμα είναι οτι δεν έχω δει (εγώ, τουλάχιστον) να υλοποιείται από κάποιον ως τώρα, και γι'αυτο απορώ. Εχει καμμία "παγίδα" μια τέτοια υλοποίηση;


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  21-11-2009, 19:10 55408 σε απάντηση της 55406

    Απ: close event σε web form

    βασικά αυτό θα μπορούσε να είναι χρήσιμο για πολλούς λόγους, το πότε ο χρήστης όντως κλείνει το παράθυρο του browser.π.χ φανταστείτε τι ωραία θα ήτανε για τον server μας και τα resources του(μνήμη) να κάνουμε άμεσα kill το session του χρήστη χωρίς να περιμένουμε το session time out.(20 λεπτά)

    το πρόβλημα είναι όπως είπατε, ότι δεν υπάρχει καμία σχέση μεταξύ του π.χ Session_end και του client-side event που γίνεται fired όταν κλείνει το browser window.

    μέσα από javascript, μπορούμε να πιάσουμε πολλά πράγματα στον browser και να πιάσουμε διάφορα events εκτός από το να πειράξουμε το DOM.

    σκέφτομαι το εξής. μέσω ajax(javascript) enabled asp.net pages, μήπως θα μπορούσαμε να περάσουμε με κάποιο τρόπο πίσω στον server, ότι όντως έκλεισε το παράθυρο.

    σίγουρα μπορούμε να πιάσουμε στον client το unload event,όταν κλείνει το παράθυρο. τώρα μένει να το επικοινωνήσουμε πίσω στον server. πιστεύω με AJAX γίνεται....
    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
  •  21-11-2009, 20:28 55409 σε απάντηση της 55408

    Απ: close event σε web form

    Αυτό είναι ένα θέμα για το οποίο έχει χυθεί πολύ μελάνι. Δεν μιλάω όμως για το να πιάσουμε event στον browser, μιλάω καθαρά για polling. Κάτι δηλαδή που θα ενημερώνει το server σε πολύ μικρότερα του 20λέπτου διαστήματα αν συνεχίζουμε ή οχι να είμαστε συνδεδεμένοι.
    Αυτό απορώ γιατί δεν έχει υλοποιηθεί ποτέ, και ποιές οι πιθανές "παγίδες" που μπορεί να εμφανίσει.


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  24-11-2009, 12:53 55451 σε απάντηση της 55409

    Απ: close event σε web form

    Να ρίξω κι εγώ τα 2 cents μου, γιατί με έχει απασχολήσει το θέμα στο παρελθόν.

    Το unload στο browser, πετιέται είτε όταν κλείνεις το παράθυρο, είτε όταν κάνεις navigate σε μια άλλη σελίδα, χωρίς να σου δίνει κάτι που να "κάνει τη διαφορά" μεταξύ των 2. Αν υλοποιήσεις κάτι σε polling ( heartbeat είναι νομίζω πιο δόκιμος όρος ) πρέπει να το χρειάζεσαι πραγματικά, γιατι πολλαπλασιάζεις τις κλήσεις στο server, όσο μικρό κι αν είναι αυτό που κάνουν - σου κλέβουν threads αν μη τι άλλο.

    Νομίζω λοιπόν ότι στην πλειοψηφία των περιπτώσεων κανείς δε χρειάζεται τόσο πολύ άμεσα την πληροφορία ότι κάποιος client έφυγε απο το site. Αν το συνδιάσεις αυτό με λίγο προσεκτικό session resource managment, τότε πραγματικά μπορείς να την παλέψεις χωρίς αλχημείες.

    Αν πάντως, για οποιονδήποτε λόγο ρε παιδί μου, ντε και καλά, επιβάλλεται, δε μπορούμε να κάνουμε αλλιώς ... η πιο απλή λύση που θα χρησιμοποιούσα εγώ είναι ένα κρυμμένο frame που κάνει refresh με meta tag. Τι ajax και javascript και αλχημείες ... μια κρυμένη φορμίτσα σε ένα frame που δε φαίνεται πουθενά, και είσαι μια χαρά.

    Άντε, καλησπέρα μας :]  


    Angel
    O:]
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems