node.js, socket, mariadb
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);
});
});
(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.
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 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
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?
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.
omdat een chat wordt als je pagina sluit en weer opent dat je het gwn terug kan lezen
Beetje nutteloos om alle berichten uit de database te halen terwijl de gebruiker online is.
Ja weet ik maar wil het toch proberen :P