The intention with the program is that when two clients connect they display in the window of one client the id of the other. The program saves the two ids in the variables but sends only to the first user who logged in. The second logged-on user does not receive anything.
server file:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var userOne = 0;
var userTwo = 0;
app.get('/', function(req, res){
res.sendFile(__dirname + '/public/index.html');
});
io.on('connection', function(socket){
console.log('a user connected');
if (userOne == 0){
userOne = socket.id;
console.log('id1:' + userOne);
}else{
userTwo = socket.id;
console.log('id2:' + userTwo);
socket.to(userOne).emit('saveId', userTwo);
socket.to(userTwo).emit('saveId', userOne);
}
socket.on('chat message', function(msg){
io.emit('chat message', msg);
});
socket.on('disconnect', function(){
console.log('user disconnected');
});
socket.send(socket.id);
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
Client file:
<!doctype html>
<html>
<head>
<title>Socket.IO chat</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font: 13px Helvetica, Arial; }
form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }
form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; }
form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; }
#messages { list-style-type: none; margin: 0; padding: 0; }
#messages li { padding: 5px 10px; }
#messages li:nth-child(odd) { background: #eee; }
</style>
</head>
<body>
<ul id="messages"></ul>
<form action="">
<input id="m" autocomplete="off" /><button>Send</button>
</form>
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script>
var idConect = 0;
$('#messages').append($('<li>').text('Conectado ao id:' + idConect));
$(function () {
var socket = io();
$('form').submit(function(){
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
socket.on('chat message', function(msg){
$('#messages').append($('<li>').text(msg));
});
socket.on('saveId', function(id){
idConect = id;
$('#messages').append($('<li>').text('Conectado ao id:' + idConect));
});
});
</script>
</body>
</html>