Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- var Message = require('./message.model');
- var userNames = (function () {
- var users = {};
- var claim = function (userID) {
- users[userID] = true;
- return true;
- };
- // serialize claimed names as an array
- var get = function () {
- var res = [];
- var userID;
- for (userID in users) {
- res.push(userID);
- }
- return res;
- };
- var free = function (userID) {
- if (users[userID]) {
- delete users[userID];
- }
- };
- return {
- claim : claim,
- free: free,
- get: get
- };
- }());
- exports.register = function(socket) {
- var userID = '';
- var notifyUsers = function () {
- // notify other clients that a new userID has joined
- console.log(userID + ' joined, broadcasting...');
- socket.broadcast.emit('user:join', {
- userID: userID
- });
- };
- console.log("Sending user list...");
- // send the new user the list of users
- socket.emit('init', {
- users: userNames.get()
- });
- // get client infos and claim the id
- socket.on('init:client', function (data) {
- userNames.claim(data.userID);
- userID = data.userID;
- console.log('New client : ID ' + data.userID);
- notifyUsers();
- });
- // broadcast a userID's message to other users
- socket.on('send:message', function (data) {
- console.log('Broadcasting message sent by ' + userID);
- socket.broadcast.emit('send:message', {
- userID: userID,
- text: data.message,
- datetime : new Date()
- });
- // Save the message in the database
- var newMessage = new Message();
- newMessage.userID = userID;
- newMessage.timestamp = new Date();
- newMessage.message = data.message;
- newMessage.save(function(err) {
- if (err) {
- console.log('Erreur : ' + err);
- }
- });
- });
- // clean up when a userID leaves, and broadcast it to other users
- socket.on('disconnect', function () {
- console.log(userID + ' left, broadcasting...');
- socket.broadcast.emit('user:left', {
- userID: userID
- });
- userNames.free(userID);
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement