与socket.io和NodeJs的私人聊天

时间:2019-02-12 20:42:55

标签: javascript node.js sockets websocket

我需要与socket.io进行私人聊天(一个接一个)。我搜索了几个stackoverflow主题,但没有找到可帮助我的代码。我已经设法建立了一个聊天室,几个人在聊天。我的代码已关闭。如何将此代码转换为私人聊天?

前端第1页:

<script type="text/javascript">
    function enviarNome(e){
        e.preventDefault()

        fetch('http://localhost:3000/chat', 
            { method: 'post', headers: { 'Content-type': 'application/json' }, body: JSON.stringify({
                name: document.querySelector('#apelido').value
            }) 
        }).then((res) => {
            if(res.status == 200){
                window.location.href = '/chat'
            }else{
                alert('nome nao aceito')
            }
        }).catch((err) => {
            alert('Erro ao conectar no servidor')
        })
    }
</script>

前端第2页:

<script type="text/javascript">
        var socket = io('http://localhost:3000/');

        $('#enviar_mensagem').click(() => {
                socket.emit(
                    'msgParaServidor',
                    { user: '', mensagem: $('#mensagem').val() }
                );
            });

        socket.on('msgParaCliente', data => {
            //alert(data.user + data.mensagem);

            let html = '';
            html += '<div class="dialogo">';
            html += `<h4> ${data.user}${data.mensagem}</h4>`;
            html += '</div>';

            $('#dialogos').append(html);

        });
    </script>

后端:

const server = app.listen(3000, () => console.log('Servidor rodando'));

let io = require('socket.io').listen(server);

io.on('connection', socket => {
console.log('Usuario conectou!');

socket.on('disconnect', () => {
    console.log('Usuario desconectou');
});

socket.on('msgParaServidor', data => {
    socket.emit('msgParaCliente', { user: data.user, mensagem: data.mensagem 
});
    socket.broadcast.emit('msgParaCliente', { user: data.user, mensagem: data.mensagem })
      });

   });


    app.post('/chat', async function store(req, res) {
    const Chat = require('./src/models/Chat');

    req.assert('name','Nome é obrigatorio').notEmpty();
    req.assert('name','Maximo 10 caracteres').len(1, 10);
    //req.assert('name','Não esta no formato email').isEmail();


    var erros = req.validationErrors();
    if(erros){
        res.status(500).json()
    }

    io.emit('msgParaCliente', { user: req.body.name, mensagem: ' se conectou!' })

    const chat = await Chat.create({
        name: req.body.name,
        type: req.body.type,
        age: req.body.age,
        value: req.body.value
    });

    return res.json(chat);
});

因为我没有在服务器端使用渲染,所以我正在使用访存来创建连接。有人可以帮我将我的代码转换为私人聊天吗?

0 个答案:

没有答案