node.js, socket, mariadb

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kenny iets

kenny iets

28/04/2016 15:42:00
Quote Anchor link
hallo,
voor een project ben ik bezig met real time chat met socket.io, node.js en mariadb.
ik wil door middel van een de database connetion de chat gegevens uitwisselen.
Ik kan het naar de database toe sturen ik krijg er alleen niks uit.
Wat doe ik fout?
ik heb het volgende geschreven:



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//Create by kenny [email protected],
//With socket.io, fs, http and mariasql
 
var fs = require('fs'),
        http = require('http'),
        socketio = require('socket.io'),
        DB = require('mariasql');
var db = new DB({
        host: '{{hier stond het IP}}',
        user: '{{hier stond user}}',
        password: '{{hier stond het wachtwoord}',
        db: '{{hier stond de databasenaam}}'
});
//prepare de qeury for insert data
var insertchat = db.prepare("INSERT INTO messages (message,date,remove_from) VALUES (:message, NOW(),'1') ");
var message = db.query("SELECT * FROM messages");
 
var server = http.createServer(function(req, res) {
        res.writeHead(200, { 'Content-type': 'text/html'});
        res.end(fs.readFileSync('index.html'));
}).listen(3000, function() {
        console.log('Listening at: http://localhost:3000');
});
 
socketio.listen(server).on('connection', function (socket) {
        socket.on('message', function (msg) {
                message.on('result', function(res) {
                        res.on('data', function(row) {
                                console.dir(row);
                        }).on('end', function() {
                                console.log('Result set finished');
                        });
                }).on('end', function() {
                        console.log('No more result sets!');
                });
                console.log('Message Received: ', msg);
                db.query(insertchat({message: msg}));
                socket.broadcast.emit('message', msg);
         });
});
 
PHP hulp

PHP hulp

06/11/2024 00:09:22
 
Thomas van den Heuvel

Thomas van den Heuvel

28/04/2016 15:57:22
Quote Anchor link
Is nodejs actief op dezelfde server als de database?
(en anders) accepteert de database ook externe connecties?
Heb je gecontroleerd dat het maken van een verbinding met de database is geslaagd?
Je prepared wel, maar execute niet?
Je zegt "Ik kan het naar de database toe sturen" waar blijkt dit uit?
 
Kenny iets

kenny iets

28/04/2016 16:01:12
Quote Anchor link
Thomas van den Heuvel op 28/04/2016 15:57:22:
Is nodejs actief op dezelfde server als de database?
(en anders) accepteert de database ook externe connecties?
Heb je gecontroleerd dat het maken van een verbinding met de database is geslaagd?
Je prepared wel, maar execute niet?
Je zegt "Ik kan het naar de database toe sturen" waar blijkt dit uit?


Ja alles
omdat ik als ik data door stuur van uit index.html die in de database invoegt.
 
Mebus  Hackintosh

Mebus Hackintosh

29/04/2016 17:07:46
Quote Anchor link
message.end();

Als ik even zo snel kijk op: https://github.com/mscdex/node-mariasql#examples

Dunno wat het precies doet, maar misschien handelt dat nog iets af?
 
Kenny iets

kenny iets

29/04/2016 17:39:46
Quote Anchor link
ik heb nu even het volgende (ja de rest werkt);
als ik console.dir(row);
krijg ik allemaal waardes uit de db.
als ik console.log(datamessage())/console.dir(datamessage());
krijg ik "undefined"
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
function datamessage(){
        messages.on('result', function(res) {
                res.on('data', function(row) {
                        return row;
                        //console.dir(row);
                });
        });
}

console.log(datamessage());


Toevoeging op 29/04/2016 17:41:44:

Mebus Hackintosh op 29/04/2016 17:07:46:
message.end();

Als ik even zo snel kijk op: https://github.com/mscdex/node-mariasql#examples

Dunno wat het precies doet, maar misschien handelt dat nog iets af?


Dat sluit de dataconnectie
Gewijzigd op 29/04/2016 17:40:08 door kenny iets
 
Randy vsf

Randy vsf

29/04/2016 18:28:10
Quote Anchor link
De inhoud van datamessage() staat er om ergens op te reageren.
wat nog niet gebeurt wanneer je het wilt loggen.

Verander de inhoud maar eens naar: return '123';
Gewijzigd op 29/04/2016 18:31:05 door Randy vsf
 
Kenny iets

kenny iets

29/04/2016 19:19:26
Quote Anchor link
Randy vsf op 29/04/2016 18:28:10:
De inhoud van datamessage() staat er om ergens op te reageren.
wat nog niet gebeurt wanneer je het wilt loggen.

Verander de inhoud maar eens naar: return '123';


moet ik die return row;
daar naar return '123'; aanpassen?
 
Randy vsf

Randy vsf

29/04/2016 19:44:05
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
function datamessage(){
        return 123;
}
console.log(datamessage());


Wat je nu hebt is gelijk aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
function datamessage(){
        
}
console.log(datamessage());

Geeft undefined
Gewijzigd op 29/04/2016 19:47:02 door Randy vsf
 
Kenny iets

kenny iets

29/04/2016 20:02:13
Quote Anchor link
jaa maar wat moet ik dan doen om het goed te krijgen?
 
Randy vsf

Randy vsf

29/04/2016 20:10:53
Quote Anchor link
Ik neem aan het terug sturen naar de verbonden client(s) dmv emit()?
Waarom wil je eigenlijk waardes uit de DB terugsturen?
Je krijgt de messages toch al binnen? je hoeft ze dan alleen op te slaan,
en de input te sturen naar verbonden clients.
 
Kenny iets

kenny iets

29/04/2016 20:27:14
Quote Anchor link
ja klopt.
omdat een chat wordt als je pagina sluit en weer opent dat je het gwn terug kan lezen
 
Randy vsf

Randy vsf

29/04/2016 20:30:24
Quote Anchor link
Gemiste berichten haal je op tijdens het initialiseren van je applicatie.
Beetje nutteloos om alle berichten uit de database te halen terwijl de gebruiker online is.
 
Kenny iets

kenny iets

29/04/2016 20:35:03
Quote Anchor link
Ja weet ik maar wil het toch proberen :P
 
Randy vsf

Randy vsf

29/04/2016 20:39:42
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.