• socket.io笔记三之子命名空间的socket连接


    当客户端发送admin命名空间下的连接,如果主连接也监听了connetion事件,主连接的connection事件会先触发执行,然后紧接着触发执行admin命名空间下的connection事件。如果客户端连接的是主连接,admin空间下的connection事件不会触发执行。

    //服务端代码
    var app = express();
    var server = require('http').createServer(app);
    var io = require('socket.io')(server,{handshake:{xdomain:true}});
    var adminNameSpace =io.of('/admin');
    
    adminNameSpace.on('connection', function(socket){ 
    console.log('admin')
    }
    
    io.on('connection', function(socket){ 
    console.log('io')
    //io.close() 如果调用了close关闭方法,主连接关闭,子空间下的connection事件不会执行 }
    //客户端代码 var ws = io('http://localhost:3002/admin'); //服务端先输出"io",然后输出"admin" 如果连接的是ws = io('http://localhost:3002'); //服务端只输出"io",adminNameSpace 空间下的connection事件不会执行 NOTE:在连接adminNameSpace命名空间时,如果主连接回调中把主连接关闭了,比如调用了io.close(),那么adminNameSpace的connection事件不会被执行
    //当通过io.close把主连接关闭后,无论在哪里尝试重新建立主连接都会失败
    
    //子命名空间下的socket connection连接事件回调中不能调用子连接的close方法,但可以在主连接的自定义事件中的回调中调用,不能在主连接的connection事件中调用,因为这时候子命名还没有建立连接。
  • 相关阅读:
    Effective C++ 条款7 关于基类的virtual析构和nonvirtual析构
    关于git 子模块
    存储类别关键字
    rm 配合正则表达式使用
    左值引用,右值引用,通用引用
    Effective C++ 条款4 使用前先初始化
    Selfgrowth
    学习随记贪心
    关于JS中Object对象的key及key的排序
    Troubles and Obstacles
  • 原文地址:https://www.cnblogs.com/toward-the-sun/p/7136752.html
Copyright © 2020-2023  润新知