美文网首页
Socket.io进阶(简单使用广播、命名空间)

Socket.io进阶(简单使用广播、命名空间)

作者: 爱写Bug的程序猿 | 来源:发表于2019-02-23 21:35 被阅读0次

命名空间

​ 每个命名空间类似于一个独立的管道。

服务器

const express = require('express');
const http = require('http');
const socketIo = require('socket.io');

const app = express();
const ser = http.Server(app);
const soc = socketIo(ser);
ser.listen(80);

let a = soc.of('/a');
//添加命名空间a
a.on('connection',(socket)=>{
    //监听a的连接事件
    socket.on('disconnect',()=>{
     //监听用户断开事件
        console.log("用户"+socket.id+"断开连接");
    });
    
    console.log("用户"+socket.id+"连接");
    
    socket.on('msg',(data)=>{
       //监听msg事件(这个是自定义的事件)
        console.log(data);//你好服务器,我是通过a的命名空间发送的信息
        socket.emit('msg','你好浏览器,我收到了你的信息');
        //向socket用户发送信息
    })
})

let b = soc.of('/b');
//添加命名空间b
b.on('connection',(socket)=>{
    //监听b的连接事件
    socket.on('disconnect',()=>{
     //监听用户断开事件
        console.log("用户"+socket.id+"断开连接");
    });
    
    console.log("用户"+socket.id+"连接");
    
    socket.on('msg',(data)=>{
       //监听msg事件(这个是自定义的事件)
        console.log(data);//你好服务器,我是通过b的命名空间发送的信息
        socket.emit('msg','你好浏览器,我收到了你的信息1');
        //向socket用户发送信息
    })
})

浏览器

<script src='socket.io.js'></script>
<!--socket.io.js自己去找-->
<script>
    let a = io.connect('http://localhost:80/a');
    //与a命名空间建立连接
    let b = io.connect('http://localhost:80/b');
    //同理

    a.emit('msg','你好服务器,我是通过b的命名空间发送的信息');
    //自定义msg事件,发送‘你好服务器’字符串向服务器
    a.on('msg',(data)=>{
     //监听浏览器通过msg事件发送的信息
        console.log(data);//你好浏览器,我收到了你的信息1
    });
    
    b.emit('msg','你好服务器,我是通过b的命名空间发送的信息');
    //自定义msg事件,发送‘你好服务器’字符串向服务器
    b.on('msg',(data)=>{
     //监听浏览器通过msg事件发送的信息
        console.log(data);//你好浏览器,我收到了你的信息2
    });
</script>

广播信息

​ 如果你想给除了你之外的所有用户广播信息只需要在.emit前面加上broadcast即可:

soc.on('connection', function (socket) {
  socket.broadcast.emit('有用户连接');
    //这条信息会发送给除了当前socket的其他用户
});

点击前往socket入门教程

相关文章

网友评论

      本文标题:Socket.io进阶(简单使用广播、命名空间)

      本文链接:https://www.haomeiwen.com/subject/qqrmyqtx.html