Skip to content

Commit

Permalink
Added private messaing (Billmike#7)
Browse files Browse the repository at this point in the history
To use, click the user's name in the user list, then type your message and send it.

Changes made internally:
The connections is now an object rather than an array. To retrieve a connection, use connections[username].
  • Loading branch information
scarabcoder committed Oct 13, 2017
1 parent 53971d1 commit 68f06b9
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 7 deletions.
27 changes: 23 additions & 4 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,14 @@ <h3>Online Users</h3>
<label>Enter Message:</label>
<textarea class="form-control" id="message"></textarea>
<br>
<input type="submit" class="btn btn-primary" value="Send message">
<input type="submit" class="btn btn-primary" id="send-btn" value="Send message">
</div>
</form>
</div>
</div>
</div>
<script>
var messaging = undefined;
$(function(){
var socket = io.connect();
var $messageForm = $('#messageForm');
Expand All @@ -65,13 +66,27 @@ <h3>Online Users</h3>

$messageForm.submit((e) => {
e.preventDefault();
socket.emit('send message', $message.val());
if(messaging == undefined){
socket.emit('send message', $message.val());
}else{
socket.emit('private message', [messaging, $message.val()]);
$chat.append('<div class="well"><strong>[you -> ' + messaging + ']' + ': </strong><i>' + $message.val());
messaging = undefined;
$('#send-btn')[0].value = "Send message";
}
$message.val('');
});

socket.on('new message', (data) => {
$chat.append('<div class="well"> <strong> ' + data.user + '</strong>: ' + data.msg + '</div>')
});
socket.on('private message', (data) => {
$chat.append('<div class="well"><strong>[' + data[0] + ' -> you]' + ': </strong><i>' + data[1]);
})
socket.on('error-msg', (data) => {
console.log("Error! " + data);
$chat.append('<div class="well"><strong style="color:red">Error! ' + data + '</strong>');
})

$userForm.submit((e) => {
e.preventDefault();
Expand All @@ -87,11 +102,15 @@ <h3>Online Users</h3>
socket.on('get users', (data) => {
var html = '';
for (i = 0; i < data.length; i++){
html += '<li class="list-group-items">'+ data[i] + '</li>';
html += '<li class="list-group-items"><a href="#" onclick="message(\'' + data[i] + '\')">'+ data[i] + '</a></li>';
}
$users.html(html);
})
});
function message(user){
messaging = user;
$('#send-btn')[0].value = "Send private message (" + user + ")";
}
</script>
</body>
</html>
</html>
18 changes: 15 additions & 3 deletions server.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ const app = express();
const server = require('http').createServer(app);
const io = require('socket.io').listen(server);

var connections = {};
users = [];
connections = [];

Expand All @@ -12,16 +13,16 @@ console.log('Server is presently running....');

app.get('/', (req, res) => res.sendFile(__dirname + '/index.html'));


io.sockets.on('connection', (socket) => {
connections.push(socket);
console.log('Connected: %s connection(s) currently active.', connections.length);

// Disconnect
socket.on('disconnect', (data) => {
if (!socket.username) return;
users.splice(users.indexOf(socket.username), 1);
delete connections[socket.username];
updateUsername();
connections.splice(connections.indexOf(socket), 1);
delete users[socket.username];
console.log('Disconnected: %s connection(s) currently active.', connections.length);
});
// Message
Expand All @@ -34,9 +35,20 @@ io.sockets.on('connection', (socket) => {
callback(true);
socket.username = data;
users.push(socket.username);
connections[socket.username] = socket;
updateUsername();
});

socket.on('private message', (data) => {
var user = data[0];
var message = data[1];
if(user in connections){
connections[user].emit("private message", [user, message]);
}else{
socket.emit("error-msg", "User " + user + " does not exist!");
}
})

function updateUsername() {
io.sockets.emit('get users', users);
}
Expand Down

0 comments on commit 68f06b9

Please sign in to comment.