2011-09-20 22 views
7

Soket.io ve node.js ile uğraşıyorum ve aşağıdakileri gerçekleştirmeyi merak ediyorum: Sunucuya ve sunucuya bir metin dizesi gönderen basit bir formum var. onu geri gönderir ve bir div'a eklenir. ne yapmak istediğim, tüm tarayıcılardaki tüm kullanıcılar için bu div güncellemesine sahip olmak, şu anda sadece mesajın gönderildiği mesajı güncellemektedir. app.js gelenSokete kadar tüm tarayıcılara mesaj gönderme io

kodu (node.js sunucu):

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> 
    <script src="/socket.io/socket.io.js"></script> 
    <script> 
    $(document).ready(function() { 
    var socket = io.connect('http://localhost:3000'); 

    $('#sender').live('click',function() { 
      var user_message = $('#message_box').val() 
      socket.emit('send_message',{message: user_message}); 
    }); 

    socket.on('get_message', function(data) { 
     $('#data').append(data.message); 
     }); 
    }); 
</script> 

ve html: istemci tarafında

io.sockets.on('connection', function(socket) { 
    socket.on('send_message', function(data) { 
    data.message = data.message + ' yo<br/>'; 
    socket.emit('get_message',data); 
    }); 
}); 

kod

<div id='data'></div> 
<input type='text' id='message_box' placeholder='send message'> 
<button id='sender'>Send Message</button> 

Ne yapayım birden fazla tarayıcıya mesaj göndermek için yapmak?

cevap

23

Değişim

socket.emit('get_message',data); 

socket.broadcast.emit('get_message',data); 

için, yayınlanan aradığınız soketine hariç tüm bağlı kullanıcı için yayın için. Ayrıca soket eklemek istiyorsanız yapabileceğiniz

io.sockets.emit('get_message', data); 
İlgili konular