我需要与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);
});
因为我没有在服务器端使用渲染,所以我正在使用访存来创建连接。有人可以帮我将我的代码转换为私人聊天吗?