zoukankan      html  css  js  c++  java
  • socket.io,命名空间

         原文:http://www.cnblogs.com/xiezhengcai/p/3966263.html 

    命名空间

    在api部分我们说io.connect('ws://103.31.201.154:5555/some')的方式连接到命名空间为some下的socket,在socket.io的前端代码中,我们看见,socket.io会将/some下的连接存入到一个nsps[nsp]下,需要重新建立一个新的socket连接时,除非你配置opts['force new connection']选项,否则socket.io会先寻nsps[nsp]是否已经存在该连接,如果存在,直接返回,不存在才会新建一个,

    Manager.prototype.socket = function(nsp){
        //这里的nsp即是我们的“/some”
      var socket = this.nsps[nsp];
      if (!socket) {
        socket = new Socket(this, nsp);
        this.nsps[nsp] = socket;
        var self = this;
        socket.on('connect', function(){
            //重连次数
          self.connected++;
        });
      }
      return socket;
    };

    服务端实现

    服务端会有 Namespace对象存储命名空间下的socket,

    function Namespace(server, name){
        //命名空间名字“/some”
      this.name = name;
      //sever 实例
      this.server = server;
      //命名空间下的socket
      this.sockets = [];
      this.connected = {};
      //命名空间中间件,会在socket建立的时候执行,传入socket实例
      this.fns = [];
      this.ids = 0;
      this.acks = {};
      this.initAdapter();
    }

    查找room,当需要发送信息的时候

    //查找room,当需要发送信息时
    Namespace.prototype.to =
    Namespace.prototype['in'] = function(name){
      this.rooms = this.rooms || [];
        //不存在则将该命名空间名字push进去
      if (!~this.rooms.indexOf(name)) this.rooms.push(name);
      return this;
    };
  • 相关阅读:
    Java实现分页
    研发技能列表
    shell 函数
    养生
    再谈创新
    写代码注意事项
    排查问题方法
    简历撰写
    jenkins
    架构
  • 原文地址:https://www.cnblogs.com/xiezhengcai/p/3966263.html
Copyright © 2011-2022 走看看