使用socket io向所有浏览器发送消息

时间:2011-09-20 19:17:58

标签: node.js socket.io

我正在搞乱socket.io和node.js,并想知道如何完成以下操作:我有一个简单的表单,它将一个文本字符串发送到服务器,然后服务器将其发回,并附加它到一个div。我想要做的是为所有浏览器中的所有用户提供div更新,目前它只更新发送消息的那个用户。

来自app.js(node.js服务器)的代码:

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

客户端代码:

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

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

我应该怎样做才能向多个浏览器发送消息?

1 个答案:

答案 0 :(得分:26)

更改

socket.emit('get_message',data);

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

要将其广播给所有连接的用户,除了您正在呼叫广播的套接字。

如果您还想包含该套接字,则可以

io.sockets.emit('get_message', data);