node.js, socket, mariadb
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:
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)
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
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);
});
});
//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);
});
});
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?
(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?
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?
(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.
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?
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?
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"
Toevoeging op 29/04/2016 17:41:44:
Dat sluit de dataconnectie
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)
1
2
3
4
5
6
7
8
9
10
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());
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?
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
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';
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
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';
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?
jaa maar wat moet ik dan doen om het goed te krijgen?
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.
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.
ja klopt.
omdat een chat wordt als je pagina sluit en weer opent dat je het gwn terug kan lezen
omdat een chat wordt als je pagina sluit en weer opent dat je het gwn terug kan lezen
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.
Beetje nutteloos om alle berichten uit de database te halen terwijl de gebruiker online is.
Ja weet ik maar wil het toch proberen :P




