websockets

Από που να ξεκινήσω; Που θα βρω; κ.α. γενικές ερωτήσεις για την δημιουργία μιας ιστοσελίδας.

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

Απάντηση
Άβαταρ μέλους
tk12345
Δημοσιεύσεις: 43
Εγγραφή: 15 Ιαν 2013 21:45
Επικοινωνία:

websockets

Δημοσίευση από tk12345 » 08 Ιούλ 2017 18:49

Έχει ασχοληθεί κανείς με websockets.

Θα με ενδιέφερε να διαβάσω γνώμες για το αν είναι καλή ιδέα.
Μεγέθη Projects (αριθμός ταυτόχρονων συνδέσεων) που τα χρησιμοποιήσατε και δούλεψαν καλά.
Προβλήματα που βρήκε κάποιος στην πράξη, ενώ δεν περίμενε με βάση αυτά που διάβαζε στις παρουσιάσεις του.
Λόγους για τους οποίος κάποιος (που είχε πρόβλημα που μπορούσαν να τον βοηθήσουν τα websockets) αποφάσισε να μην τα χρησιμοποιήσει.

sibas
Honorary Member
Δημοσιεύσεις: 1850
Εγγραφή: 21 Φεβ 2003 01:21
Τοποθεσία: Μια εδώ.. Μια εκεί.. Σήμερα είμαι εδώ!!!
Επικοινωνία:

Re: websockets

Δημοσίευση από sibas » 16 Ιούλ 2017 08:56

Εδω και λιγο διάστημα στήνω ενα chat με php websockets, θεωρητικά θα μπορεί να σηκώσει 1024 συνδέσεις, αλλά θα είμαι ευχαριστημένος αν παιξει με 200-300, το πρόβλημα μου μέχρι τώρα είναι να το κάνω να παίξει με ssl και φυσικά να βρω το κατάληλλο vpn ή vps server?
Περισσότερα θα μπορέσω να πω μόλις θα είναι στον αέρα!!

Άβαταρ μέλους
tk12345
Δημοσιεύσεις: 43
Εγγραφή: 15 Ιαν 2013 21:45
Επικοινωνία:

Re: websockets

Δημοσίευση από tk12345 » 26 Αύγ 2017 22:55

Αυτό (το να παίζει με ssl) μπορείς να το λύσεις εύκολα με tunneling (πχ stunnel αν είσε σε linux)

redor
Δημοσιεύσεις: 5
Εγγραφή: 22 Αύγ 2017 12:26

Re: websockets

Δημοσίευση από redor » 04 Σεπ 2017 18:24

Ρίξε μια ματιά στο https://freestuff.gr/forums/viewtopic.p ... 07#p613907 εκεί εξηγώ γιατί η υπάρχουσα δομή σε PHP δεν είναι δυνατόν να σηκώσει αποτελεσματικά websocket server (ή πιο σωστά web server για χρήση websockets). Όσο αφορά το ssl είναι απλό , αρκεί ένας wrapper StreamContext (class φυσικά) στις stream_context_* functions της PHP (αν θες παραπάνω για αυτό ευχαρίστως).

Χαίρομαι που αρχίζουν να πειραματίζονται και άλλοι με websockets , λυπάμαι που δεν έχουμε προσφέρει κάποια αξιόπιστη λύση ακόμα.

Άβαταρ μέλους
tk12345
Δημοσιεύσεις: 43
Εγγραφή: 15 Ιαν 2013 21:45
Επικοινωνία:

Re: websockets

Δημοσίευση από tk12345 » 09 Σεπ 2017 02:04

redor ολοκληρωμένη η απάντηση σου σχετικά με websockets php και chat.
100% php λύση σε σοβαρό πρόβλημα με websockets σίγουρα δεν υπάρχει. Μπορείς όμως θεωρητικά να αφήσεις το μεγάλο κομμάτι σε php και να έχεις ένα μικρό κομμάτι σε κάτι άλλο (σε C++ ας πούμε).
Η μόνη μου διαφωνία είναι στο γιατί αυτό το τόσο ενδιαφέρον πράγμα δεν έχει απήχηση. Συμφωνώ ότι δεν φταίει το front end.
Πιστεύω ότι δεν φταίει ούτε το back end. Πραγματικά ταυτόχρονα requests (δηλαδή requests που πρέπει να εξυπηρετηθούν το ίδιο δέκατο του δευτερολέπτου και όχι ταυτόχρονους χρήστες όπως το μετράει το Analylitics) περισσότερα από 50-100 δεν νομίζω να έχουν πολλά ελληνικά sites.
Άρα ακόμη και PHP χωρίς threads είναι μια χαρά. Πιθανότατα πολύ καλύτερα από ότι παίζουν με τον παραδοσιακό τρόπο.
Τα προβλήματα κατά τη γνώμη μου είναι τα εξής:
1) Είναι πολύ πιο απαιτητικός ο προγραμματισμός
2) Το αποτέλεσμα δεν είναι φιλικό στις μηχανές αναζήτησης
3) Το αποτέλεσμα δεν είναι κατάλληλο για adsense

Με node.js και websockets έχει δουλέψει κάποιος που θέλει να μοιραστεί τις εμπειρίες του;

redor
Δημοσιεύσεις: 5
Εγγραφή: 22 Αύγ 2017 12:26

Re: websockets

Δημοσίευση από redor » 13 Σεπ 2017 01:11

Γεια σου tk12345,

Περιέργως έγραψες ακριβώς την προσωρινή λύση που χρησιμοποιούμε αυτή την στιγμή , το τμήμα των WebSockets γίνεται με C++ και multi-threading ενώ έχουν φτιαχτεί υποδοχές στο εταιρικό framework για το υπόλοιπο τμήμα της εφαρμογής. Εδώ και κάνα χρόνο , όταν βρίσκω ελεύθερο χρόνο , προσπαθώ να το βγάλω όλο αυτό ενοποιημένο σε ένα php extension σε C++ αλλά είναι δυσκολότερο από ότι ακούγεται καθώς ο πυρήνας της PHP δημιουργεί απρόσμενα θέματα όταν είσαι σε ZTS (χρησιμοποιείς threads) αλλά και οι web servers (apache2, nginx) δεν πάνε πίσω στο πως μπορούν να τρέξουν ένα τέτοιο extension. Και σήμερα μέχρι πριν από λίγο αυτό δούλευα και ο στόχος είναι απλά να δείξω ότι είναι εφικτό και μετά να το ανοίξω στην κοινότητα (αρχικά στην εταιρεία που δουλεύω) για περαιτέρω ανάπτυξη.

Γράφεις ότι στην συντριπτική πλειοψηφία των Ελληνικών sites δεν θα ήταν πρόβλημα ακόμα και μια plain PHP λύση τύπου rachet γιατί δεν έχουν ταυτόχρονα πολλά requests. Έτσι είναι , αλλά ήθιστε να μην υπάρχει ένας server για καθένα από αυτά. Σκέψου τι γίνεται αν σηκώσεις π.χ. 100 με 20 ταυτόχρονα requests το καθένα... (πόσους διαφορετικούς WebSocket servers χρειάζεσαι και πόσο καθυστερούν ανάμεσα στα requests (γιατί δεν μπορεί κάπου θα έχεις κάποιο blocking – πχ σύνδεση στην βάση ή διάβασμα του session από το σχετικό αρχείο) )

Διαφωνώ όμως με τα συμπεράσματά σου και για αυτό είπα να σου γράψω αυτή την απάντηση.
1) Είναι πολύ πιο απαιτητικός ο προγραμματισμός .
// Αν πας στην λύση multi threaded C++ για WebSockets που τρέχει PHP για το result το πιθανότερο είναι να χρειαστεί να αλλάξεις ελάχιστα αν ήδη γράφεις OOP.
2) Το αποτέλεσμα δεν είναι φιλικό στις μηχανές αναζήτησης
// Αν ήδη χρησιμοποιείς την λογική ότι αυτό που γράφεις είναι web app ή διαφορετικά one page website δεν έχεις επίσης να φοβηθείς τίποτα από τις μηχανές αναζήτησης , τι AJAX τι WS .. από την στιγμή που τα link σου αν τα ακολουθήσει κάποιος με τον συμβατικό τρόπο (π.χ. άνοιγμα σε νέα καρτέλα) , οδηγούν σε ΑΚΡΙΒΩΣ ίδιο περιεχόμενο (ακριβώς ίδιο , meta , head και όλα). Τότε δεν έχεις πρόβλημα. Κατανοώ ότι όπως έχει εξελιχθεί η θεωρία με το angularjs και το react μοιάζει απωθητική η λύση του web app αλλά αν επιστρέψεις στον πυρήνα της θεωρίας είναι πραγματικά απλούστερο.
3) Το αποτέλεσμα δεν είναι κατάλληλο για adsense
// Ακριβώς τα ίδια με το 2. Μια χαρά δουλεύουν τα web apps (one page sites) με το adsense

Παρόλο που έχω απομακρυνθεί από την ιδέα του node.js για websockets (τα περισσότερα implemantations που έχω δει κάπου έχουν μέσα τους fork) θα με ενδιέφερε και εμένα να διαβάσω την εμπειρία κάποιου που πραγματικά χρησιμοποιεί node.js για WebSockets

Άβαταρ μέλους
tk12345
Δημοσιεύσεις: 43
Εγγραφή: 15 Ιαν 2013 21:45
Επικοινωνία:

Re: websockets

Δημοσίευση από tk12345 » 14 Σεπ 2017 02:47

Χαίρομαι που ανοίγουμε μια ενδιαφέρουσα κουβέντα.
Σε αυτά που γράφω παραπάνω δεν το συγκρίνω με άλλες τεχνικές για one page site. Το συγκρίνω με το κλασικό κάθε σελίδα διαφορετικό url.
Το adsense στους όρους του λέει ότι απαγορεύεται η χρήση του σε τέτοιου τύπου σελίδες. Στην πράξη υπάρχουν τέτοιες σελίδες που το χρησιμοποιούν για καιρό. (Και το ajax το ίδιο πράγμα είναι)
Διαβάζοντας το σχόλιο σου για την αυξημένη δυσκολία που έγραφα, με έκανες να σκεφτώ ότι όντως δεν είναι κάτι τόσο τραγικό. Μάλλον είναι πιο πολύ ψυχολογική ανησυχία γιατί νοιώθω ότι είμαστε σε αχαρτογράφητα νερά, παρά ότι είναι αντικειμενικά κάτι το πιο δύσκολο.

redor
Δημοσιεύσεις: 5
Εγγραφή: 22 Αύγ 2017 12:26

Re: websockets

Δημοσίευση από redor » 16 Σεπ 2017 11:11

Γεια σου tk12345

Νομίζω ότι πρέπει να αρχίσω γράφοντας ότι αν και χρησιμοποιώ το AdSense χρόνια (κυρίως σε παλιά < 2010 ιδιόκτητα projects) και αρχιτεκτονική - web app - (SPA) (κυρίως σε eshops / news sites) επίσης χρόνια , δεν έχει χρειαστεί μέχρι σήμερα να βάλω AdSense μέσα σε web app. Έψαξα να βρω που λέει το AdSense ότι απαγορεύεται να το εντάξεις σε SPA και δεν βρήκα , αν έχεις κάποιο link παρακαλώ μοιράσου το (απλά να είναι κάποιο link από το ίδιο το AdSense)

Πιθανώς να υπάρχει σύγχυση με αυτό: “Publishers are not permitted to refresh a page or an element of a page without the user requesting a refresh.”.

Υπάρχουν πολλές SPA αρχιτεκτονικές (σχεδόν μια για κάθε υλοποίηση της ίδιας θεωρίας) σε αυτή που ανέφερα (web app) ο χρήστης ποτέ δεν ανακατευθύνεται σε περιεχόμενο αν δεν πατήσει κάποιο link (τα modal τμήματα είτε είναι dialogs είτε στο html footer δεν μετράνε καθώς απαιτούν UI διάδραση interaction του χρήστη). Αν σερβίρεις ακριβώς το ίδιο html είτε αν κάποιος μπαίνει σε ένα URL και είναι η πρώτη του σελίδα από server side είτε αν πατήσει κάποιο link και αλλάζεις το history και το html τότε δεν υπάρχει πρόβλημα , αρκεί και στις δύο περιπτώσεις ο html κώδικας που προκύπτει να είναι ίδιος σε όλα (και head και body).
Γνωρίζω ότι ακόμα και αρχιτεκτονικές SPA που δεν ακολουθούν απόλυτα το μοντέλο web app (π.χ. angularJs) έχουν τα δικά τους modules για το AdSense και το AdSense τα δέχεται μια χαρά (δεν θα μπορούσε και αλλιώς , αν το σκεφτείς λίγο).

Σίγουρα όμως η υλοποίηση αν δεν χρησιμοποιείς αποκλειστικά κάποια από τις δύο έτοιμες πιο δημοφιλείς λύσεις SPA δεν είναι και το απλούστερο , αλλά από την άλλη δεν είμαστε για τα απλούστερα ( ;) ).
Αυτό που όμως έχω χρησιμοποιήσει είναι Google DFP (DoubleClick for Publishers) με GPT (Google Publisher Tag). Για να μην μακρηγορήσω ενώ το το AdSense είναι ad network (είναι κουραστικό να τα μεταφράζω όλα στα Ελληνικά) το DFP είναι ad server. Το DFP / GPT ταιριάζει καλύτερα σε ένα web app (καθώς αν και σερβίρεται μέσω web είναι στην πραγματικότητα app ( ακόμα και αν εξαρτάται από εξωτερικά recourses) ). Ψάχνοντας να σου δώσω κάποιο link αντιπαραβολής απόδοσης βρήκα μόνο ένα από το 2013 ( https://webgilde.com/en/google-dfp-compared-to-adsense/ ) , και σήμερα τα πράγματα είναι ακόμα καλύτερα.
Σίγουρα (επίσης) σε αυτή μου την απάντηση ξέφυγα από τον τίτλο του θέματος που είμαστε.

Για τα WebSockets καταλήγεις ότι υπάρχει πάντα η φοβία του άγνωστου / frontier. Είναι λίγο περίεργο που πέντε χρόνια μετά από όταν τα WebSockets είναι λειτουργικά με σχεδόν το ίδιο τρόπο σε όλους τους browsers θεωρείται ακόμα frontier. Όμως έτσι είναι , τα back end implementations που υπάρχουν είτε έχουν πρόβλημα λειτουργικότητας (δεν λειτουργούν δηλαδή σωστά) , είτε καταναλώνουν αχρείαστα πολλούς πόρους (π.χ. Tomcat WebSocket API) είτε απαιτούν γνώσεις για την υλοποίησή τους χωρίς να δίνουν το αποτέλεσμα που θα μπορούσαν (π.χ. WebSocket server σε C++ που τρέχει PHP για το αποτέλεσμα (λύση που χρησιμοποιώ και εγώ προς το παρόν) ). Όλα αυτά συν ότι καιρό ήθελα να βγάλω το εταιρικό framework σε C++ extension με έχουν κάνει να δουλεύω για μια ενοποιημένη λύση μέσα σε php-fpm (άρα και για apache και για nginx) σε ένα PHP extension.

Κλείνοντας ο φόβος του frontier είναι λογικός , από την άλλη είναι και χαρά είναι και δημιουργική πρόκληση. Πλέον το χειρότερό μου είναι όταν γράφω κώδικα για να κάνω κάτι που ξέρω πως θα το κάνω πιο αποδοτικό και βαριέμαι ατελείωτα να το κάνω. Νομίζω ότι οι προκλήσεις και οι νέες γνώσεις είναι αυτές που μας κρατάνε το ενδιαφέρον.

Άβαταρ μέλους
tk12345
Δημοσιεύσεις: 43
Εγγραφή: 15 Ιαν 2013 21:45
Επικοινωνία:

Re: websockets

Δημοσίευση από tk12345 » 17 Σεπ 2017 04:31

Έψαξα να βρω αυτό που είχα διαβάσει (ήταν σε faq για τα tos στο adsense) αλλά δεν το βρίσκω.
Μπορεί να έχει περάσει και πάνω από χρόνος από τότε.
Αυτό που ήθελα να κάνω ήταν κάποιου τύπου search (περιελάμβανε και πληκτρολόγηση) που να φέρνει τα αποτελέσματα
στην ίδια σελίδα. Στο συγκεκριμένο πρόβλημα το περιεχόμενο μπορεί να άλλαζε και αυτόματα οπότε μπορεί να ανάγεται και σε αυτό που αναφέρεις (αλλαγή τμημάτων περιεχομένου χωρίς παρέμβαση χρήστη). Το πολύ βασικό πλεονέκτημα της χρήσης των websockets εξάλλου είναι ακριβώς αυτό το πράγμα. Να ξεκινάει πράγματα ο server και όχι ο client.
Είχα βρει απάντηση (από google) που το απέκλειε (κάτι πολύ κοντινό με αυτό που ήθελα εγώ) ρητώς.
Η τεκμηρίωση ήταν ότι σε αυτή την υλοποίηση το adsense (1) δεν μπορεί να ξέρει το περιεχόμενο της σελίδας και κατά
συνέπεια δεν μπορεί να φέρει σχετικές διαφημίσεις και (2) δεν μπορεί να ελέγχει αν η σελίδα που εμφανίζει διαφημίσεις
πληρεί τους όρους του προγράμματος.
Επιπλέον, δεν θεωρώ καλή τακτική να αλλάζεις το url με το παραμικρό που κάνει ο χρήστης σε μια τέτοια σελίδα. Είναι πολύ αφύσικη (όπως το αντιλαμβάνεται ένας μέσος χρήστης) η συμπεριφορά του back.
To DFP απλά το έχω δει λίγο σε μια παρουσίαση. Δεν το έχω δουλέψει.
Η γενική μου αίσθηση είναι ότι οτιδήποτε πέρα από το παραδοσιακό (σελίδα = περιεχόμενο = url) δεν υποστηρίζεται ακόμη επαρκώς (αν δεν απαγορεύεται) ούτε από το search ούτε από το διαφημιστικό κομμάτι της google.

Απάντηση

Επιστροφή στο “Γενικές ερωτήσεις κατασκευής ιστοσελίδων”

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

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