1
The intention with the program is that when two clients connect to display in a client window the id of the other. The program saves the two ids in the variables but sends only to the first user who connected. The second connected 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>
You can include your full code?
– Daniel
I edited the post with the full code, made an adaptation in the code I found on the socket.io website itself. I’m trying to get two clients to interact with each other.
– Otávio Augusto