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; };
知识是我们已知的
也是我们未知的
基于已有的知识之上
我们去发现未知的
由此,知识得到扩充
我们获得的知识越多
未知的知识就会更多
因而,知识扩充永无止境
posted on 2014-09-11 13:17 xiezhengcai 阅读(3739) 评论(0) 编辑 收藏 举报