2011-09-20 3 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);