παπι Δημοσ. 30 Ιουλίου 2013 Δημοσ. 30 Ιουλίου 2013 Μπα, το socket.io δε μου κανει....Επισης, αν εχω καταλαβει καλα, το socket.io δεν ακολουθει την "παραδοσιακη" συνταξη των websockets (σε js) αλλα εχει μια δικια του. Οπως και να χει, το προβλημα λυθηκε, ηταν γελιο και γω ηλιθιος. Με πατεντα. Συνδεομουν στη βαση με "λαθος" χρηστη που τα δικαιωματα του δεν περιλαμβαναν το insert στον πινακα controller. *facepalm* Btw εχεις ορισει κανα προτοκολο επικοινωνιας στο handshake;
slevinkelevra Δημοσ. 31 Ιουλίου 2013 Μέλος Δημοσ. 31 Ιουλίου 2013 Εννοεις, UTF, binary ή stream array? Μαλλο οχι, αυτα ειναι οι τυποι δεδομενων που μπορεις να στειλεις... Δε ξερω παπι, με πιανεις αδιαβαστο....Θες να με βοηθησεις λιγο? Τι εννοεις?
παπι Δημοσ. 31 Ιουλίου 2013 Δημοσ. 31 Ιουλίου 2013 Για ποσταρε το server side. εδιτ μονο το accept scope
slevinkelevra Δημοσ. 31 Ιουλίου 2013 Μέλος Δημοσ. 31 Ιουλίου 2013 Εδω εισαι.... var connection = request.accept(null, request.origin); console.log((new Date()) + ' Connection accepted.'); connection.on('message', function(message) { var ja=message.utf8Data; var conString = "pg://username:password@localhost:1234/slevinDataBase"; var client = new pg.Client(conString); client.connect(); var query = client.query(' SELECT p_name FROM pins WHERE p_id ='+ja) query.on("row", function (row, result) { result.addRow(row);}); for (var i=0; i<result.rows.length; i++){ connection.send( '<details open><summary><b>Αποτελέσματα Αναζήτησης</b></summary><b>Όνομα</b></br>' +result.rows[i].p_name+'</details>' } client.end(); });
παπι Δημοσ. 31 Ιουλίου 2013 Δημοσ. 31 Ιουλίου 2013 1) Εχεις blocking την accept; 2) Δεν καταλαβαινω γιατι θελεις socket για το παραπανω. Τα socket ειναι για streams δηλαδη για "περιπλοκη" επικοινωνια, το παραπανω ειναι απλα ενα get. Ετσι οπως το εγραψες στην αρχη εγω νομιζα οτι θελεις κατι σα database viewer σε client.
slevinkelevra Δημοσ. 31 Ιουλίου 2013 Μέλος Δημοσ. 31 Ιουλίου 2013 2) Ειναι αρχικο στάδιο, πιο μετα θα πηγαινοερχονται κ φωτογραφίες απο το ιδιο κωδικα 1) Τι την εχω την accept?
παπι Δημοσ. 1 Αυγούστου 2013 Δημοσ. 1 Αυγούστου 2013 Το node ειναι event driven, αυτο ειναι και το μεγαλο του "ατου" κατα την γνωμη μου. Οταν λεμε blocking function εννοουμε οτι αυτη η συναρτηση μπλοκαρει τον κωδικα. Δηλαδη ο κλασικος κωδικας. πχ blocking var mysql = require('mysql'); function write(msg) { console.log(msg); } write(0); //blocking var con = mysql.createConnection({ host: 'localhost', user: 'root', password: 'papi', database: 'test' }); write(1); con.connect(); var res = con.query('insert into test_tbl values(null,\'sadas\',\'test1aasd\')'); write(2); con.end(); write(3); Στο παραπανω τα παντα ειναι blocking δηλαδη ο κωδικας θα εκτελεστει ετσι οπως τον βλεπεςι αρα θα εχεις σα output 0 1 2 3 απο την αλλη υπαρχουν οι nonblocking function πχ var mysql = require('mysql'); function write(msg) { console.log(msg); } //nonblocking write('1'); var con = mysql.createConnection({ host: 'localhost', user: 'root', password: 'papi', database: 'test' }); con.connect(function (err) { write('2'); con.query('insert into test_tbl values(null,\'test1\',\'test1a\')', function (err, res) { write('3'); }); write('4'); con.end(function (err) { write('5'); }); write('6'); }); write('7'); Εδω εχεις ως blocking μονο τα write και την mysql.create... ολα τα υπολοιπα ειναι nonblocking. Εδω η εκτελεση ειναι λογο περιεργη. Θα αρχισει με το write(1) μετα θα παει στο var con = mysql.... μετα θα κανει register ενα callback πανω στο connect και μετα απευθειας παει στο write('7') ! Για αυτο λεγονται Nonblocking, επειδη δεν μπλοκαρουν τον κωδικα. Τελος, τα write('2'), write(4), και write(6) θα εκτελεστουν με την σειρα (εφοσον αυτα ειναι blocking) οταν το con συνδεθει με την βαση το write('3') θα εκτελεστει οταν το query θα παρει τα αποτελεσματα το write(5) οταν κλεισει η συνδεση να και το output Your environment has been set up for using Node.js 0.10.10 (ia32) and npm. C:\Users\papi>cd my documents C:\Users\papi\My Documents>cd js C:\Users\papi\My Documents\js>node blocking.js 0 1 2 3 C:\Users\papi\My Documents\js>node noneblocking.js module.js:340 throw err; ^ Error: Cannot find module 'C:\Users\papi\My Documents\js\noneblocking.js' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:901:3 C:\Users\papi\My Documents\js>node nonblocking.js 1 7 2 4 6 3 5 C:\Users\papi\My Documents\js> Εαν το καταλαβεις ολο αυτο που προσπαθω να σου πω, τοτε θα βρεις και ενα σοβαρο λαθος που εχεις σε αυτο που μου ποσταρες.
mad-proffessor Δημοσ. 1 Αυγούστου 2013 Δημοσ. 1 Αυγούστου 2013 Παπί σωστό αυτό που λες ότι το node είναι event-driven, πάρα αυτά εγω πέρα απο το να ανοίγεις σύνδεση με τη βάση δε βρίσκω άλλα θετικά στο node. Δηλ. θα στήσεις http server μέσω javascript ποιο το νόημα όταν έχεις nginx ο πρώτος http event driven server και απο τους πιο lightweight; Ή μήπως θα κάνεις file manipulation και io μέσω javascript; Φοβάμαι οτι ανοίγεις ένα σωρο προβλήματα ασφάλειας έτσι. Αναγνωρίζω βέβαια ότι είναι επαναστατική εξέλιξη στο web όμως έτσι, να εξηγούμαι. Υ.Γ : Σόρρυ κιόλας απο το topic starter για το hijacking του thread, ελπίζω να γνωρίζεις οτι ο χρήστης που συνδέεται στη βάση πρέπει να έχει αυστηρά δικαιώματα.
παπι Δημοσ. 1 Αυγούστου 2013 Δημοσ. 1 Αυγούστου 2013 Απλα το βρισκω ενδιαφερον για αυτο και το προμοταρω. Btw ο http server δεν ειναι τιποτα το ιδιαιτερο, μονο rest αναλαμβανει και απο αυτο μονο τα κλασικα post get. Ολη η δουλεια πεφτει στους Interpreters που φτιαχνουν τις σελιδες.
x_maras Δημοσ. 2 Αυγούστου 2013 Δημοσ. 2 Αυγούστου 2013 @mad Μην είσαι κακός με την node Use case scenario για τη node: Real-time Ας πούμε ότι θες να διαβάσεις ένα real-time api, όπως αυτό του instagram, να κάνεις κάποια επεξεργασία πάνω σε αυτά τα data και τέλος να τα παρουσιάσεις στο χρήστη μόλις τα λάβεις, χωρίς να έχεις τον client να κάνει requests συνεχώς για το αν υπάρχουν νέες πληροφορίες και για να μη καλεί ο server συνεχώς το web service για το αν έχεις καινούρια data ή όχι. Άλλο scenario είναι να θέλεις να κάνεις requests π.χ. σε 3 διαφορετικά webservices. Σκέψου την περίπτωση ενώς traveling website. Θέλεις να κάνεις κράτηση πτήσης, δωματίου και αυτοκινήτου. Για τις 3 αυτές πληροφορίες ζητάς από 3 διαφορετικές υπηρεσίες να σου δώσουν στοιχεία. Μπορείς να κάνεις και τα 3 requests και non-blocking να εμφανήσεις στο χρήστη ότι στοιχεία λαμβάνεις πρώτα, χωρίς να περιμένεις να επιστρέχουν όλα τα responses και όπως στο πιο πάνω παράδειγμα, χωρίς polling. Τέλος η node.js κάνει χρήση του google v8 engine που κάνει compile javascript κώδικα σε machine code. Φυσικά δεν είναι η μόνη λύση, π.χ. δες την GO, αλλά σίγουρα σου δίνει το πλεονέκτημα να ξεκινήσεις γρήγορα με τη γλώσσα στη περίπτωση που ξέρεις javascript
slevinkelevra Δημοσ. 2 Αυγούστου 2013 Μέλος Δημοσ. 2 Αυγούστου 2013 @παπί. Ναι ρε φιλε, ειχα διαβασει και για το nonblocking κ απ οτι φαινετε το διελυσα ομως. Ευχαριστω που μοιραζεσαι γνωση και με ξεστραβωσες. Ναι, ειδα τη δαφορα, τουλαχιστον εμπειρικα. Για nonblocking τα δηλωνω ολα ως "functions" πχ con.end(function (err) { Το λαθος , αν καταλαβα σωστα, ειναι οτι εχω blocking μεσα σε blocking? @mad-professor Κανενα προβλημα ρε συ, ετσι κ αλλιως, οσο πιο πολυ αναπτυσουμε ενα θεμα τοσο πιο πολυ μαθαινουμε. Ευχαριστω ολους για τις παρατηρησεις σας. Δεν "προλαβαινω" να τσεκαρω σερβερ side κωδικα τωρα, να τον αλλαξω σε nonblocking , γτ φτιαχνω client side τωρα. Να τελειωσει, και μετα. Μολις πιασω server side παλι, θα επανελθω με νεο ποστ.
παπι Δημοσ. 3 Αυγούστου 2013 Δημοσ. 3 Αυγούστου 2013 Χρησιμοποιεις το result χωρις να εχει γεμισει για αυτο λεω οτι εχεις ενα bug. << Για nonblocking τα δηλωνω ολα ως "functions" πχ>> βασικα για nonblocking πρεπει να υπαρχει τεκμηριωση. Το "παιρνει function" ειναι "παιρνει callback" το οποιο δεν σημαινει οτι ειναι nonblocking πχ jquery.each παιρνει callback αλλα δεν ειναι nonblocking.
lesvos2018 Δημοσ. 4 Ιανουαρίου 2018 Δημοσ. 4 Ιανουαρίου 2018 γεια σας παιδια. εψαχνα για websockets στο Google και επεσα πανω σας. Ασχολουμε με τα websockets λιγο καιρο και εχω φτιαξει 1-2 πραγματακια χωρις την χρηση καποιου γνωστου framework . Ενα demo chat μπορειτε να το δειτε εδω. https://sockets.oasbets.com και εναν MSSQL-Editor ( στυλ phpadmin) που μπορειτε να το δειτε εδω. https://sockets.oasbets.com:8444/ αν καποιος θέλει τιποτα custom πανω σε websockets ας μου στειλει πμ. καλή χρονια σε ολους τους κομπουτεραδες. 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα