Bonjour tous le monde.
Je suis en train de faire une messagerie privée, j'avance bien mais j'ai quelques soucis.
Je ne sais pas comment faire pour qu'un message s'affiche en direct uniquement si l'utilisateur est dans la page de la conversation concernée.
Voici mon code pour le moment :
Coté client :
Coté serveur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <script src="http://localhost:8080/socket.io/socket.io.js"></script> <script> var socket = io.connect('http://localhost:8080'); var destinataire = "{{ idDest }}"; var expediteur = "{{ app.user.id }}"; socket.emit('join', expediteur); $('form').submit(function(event){ event.preventDefault(); var message = $('#feelinglove_messagebundle_message_contenu').val(); socket.emit('message', {destinataire: destinataire, message: message}); $('#feelinglove_messagebundle_message_contenu').val(''); }); socket.on("new_msg", function(data) { alert(data.msg); }); </script>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 var http = require('http'); var fs = require('fs'); var url = require('url'); var server = http.createServer(function(req, res) { console.log("un utilisateur affiche la page"); var page = url.parse(req.url).pathname; console.log(page); }); // Chargement de socket.io var io = require('socket.io').listen(server); // Quand on client se connecte, on le note dans la console io.sockets.on('connection', function (socket) { var user; socket.on('join', function (expediteur) { socket.join(expediteur); // We are using room of socket io }); socket.on('message',function (data) { io.to(data.destinataire).emit('new_msg', {msg: data.message}); console.log(data); }); }); server.listen(8080);
Partager