Por que meu aplicativo Socket.io Express está apenas enviando para o cliente do remetente?
Pergunta
Estou tentando escrever um aplicativo de bate-papo básico com Node.js (Express) e Socket.io.Tudo 'parece' estar funcionando, mas meu servidor de soquete parece estar apenas 'enviando' a mensagem de volta ao remetente original.Aqui está meu código de soquete:
var client = io.listen(app);
client.sockets.on('connection', function (socket) {
socket.on('message', function (data) {
console.log(data);
socket.send(data);
});
});
E aqui está meu código do lado do cliente:
$(document).ready(function() {
var socket = new io.connect('http://localhost:3000');
socket.on('connect', function() {
socket.send('A client connected.');
});
socket.on('message', function(message) {
$('#messages').html('<p>' + message + '</p>' + $('#messages').html());
console.log(socket);
});
$('input').keydown(function(event) {
if(event.keyCode === 13) {
socket.send($('input').val());
$('input').val('');
}
});
});
Agradecemos a ajuda.
Solução
Use client.sockets.emit
em vez de socket.emit
.Ele emitirá para cada cliente conectado (transmissão), usando o objeto de soquete apenas para o cliente específico.
Outras dicas
Lado do servidor, acho que você quer:
socket.broadcast.emit(data);
em vez de:
socket.send(data);
Consulte "Transmitindo mensagens" na parte inferior da página "Como usar" .:)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow