2011-09-20 46 views
7

我正忙於使用socket.io和node.js,並想知道如何完成以下操作:我有一個簡單的表單,它向文件服務器發送文本字符串,服務器將其發回,並將其附加到div。我想要做的是爲所有瀏覽器中的所有用戶更新div,目前它只更新發送消息的那個。從app.js將消息發送到所有帶有套接字的瀏覽器io

代碼(Node.js的服務器):

<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> 

和HTML:在客戶端

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

代碼

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

我應該怎麼正在做什麼來發送消息到多個瀏覽器?

回答

23

變化

socket.emit('get_message',data); 

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

要將其廣播到所有連接的用戶,除非你在哪裏調用播放的插座。

如果您還希望包括插座,你可以做

io.sockets.emit('get_message', data); 
相關問題