广播

下一个目标是让我们从服务器向其他用户发送事件

为了发送一个事件给所有人,socket.io给我们提供了io.emit:

  1. io.emit('some event',{for:'hey gay! to everyone'})

如果你想向除了某些socket以外的所有人发送消息,我们有broadcasting广播标志:

  1. // 向所有非自己连接的客户端,发送连接数
  2. io.on('connection',(socket)=>{
  3. socket.broadcast.emit('hi')
  4. })

如图,刷新中间的窗口,服务器则向左右两侧的窗口推送消息:

广播

在这种情况下。为了简单起见,我们会将消息发送给所有人,包括发件人

  1. io.on('connection',(socket)=>{
  2. socket.on('chat message',(msg)=>{
  3. io.emit('chat message',msg)
  4. })
  5. })

在客户端,我们捕获到聊天消息,将其也包含在页面中,现在客户端的JS代码如下:

  1. <script>
  2. $(function () {
  3. var socket = io();
  4. $('form').submit(function(e){
  5. e.preventDefault(); // prevents page reloading
  6. socket.emit('chat message', $('#m').val());
  7. $('#m').val('');
  8. return false;
  9. });
  10. socket.on('chat message', function(msg){
  11. $('#messages').append($('<li>').text(msg));
  12. });
  13. });
  14. </script>

这就是完成了我们的聊天应用程序,大约20行代码!它就是这样子:

mp4 :https://i.cloudup.com/transcoded/J4xwRU9DRn.mp4