Erro Socket.io ao criar conexão entre dois clientes

86 views
Skip to first unread message

Otávio Augusto

unread,
Jun 24, 2017, 12:28:40 PM6/24/17
to Node.js Brasil

A intenção com o programa é que quando dois clientes se conectarem exibir na janela de um cliente o id do outro. O programa salva os dois ids nas variaveis mas envia apenas para o primeiro usuario que se conectou. O segundo usuario conectado não recebe nada.  Fiz uma adaptação no código que encontrei no próprio site do socket.io. Estou tentando fazer com que dois clientes interajam entre si. 


arquivo do servidor:


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');
});



arquivo cliente:


<!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));
            });

DaneiL

unread,
Jul 21, 2017, 8:57:18 AM7/21/17
to nod...@googlegroups.com
No server side, para enviar mensagem em broadcast

```
io.sockets.emit
```

Isso deve funcionar.

--
Você recebeu essa mensagem porque está inscrito no grupo "Node.js Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nodebr+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
[]'s
Reply all
Reply to author
Forward
0 new messages