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;
};

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM