Socket.io之Socket类

本文探讨了Socket.io中的Socket类,重点在于其如何加入多个房间,并在命名空间的adapter中管理房间。详细阐述了数据流从接收到数据包到触发事件的过程,包括onpacket、onevent、dispatch、dispatchSocket、emit以及数据包的广播和写入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

var Emitter = require('events').EventEmitter;
var parser = require('socket.io-parser');
var url = require('url');
var debug = require('debug')('socket.io:socket');

module.exports = exports = Socket;


//事件名数组
exports.events = [
  //错误事件
  'error',
  //连接事件
  'connect',
  //断开连接事件
  'disconnect',
  //正在断开
  'disconnecting',
  //新监听器
  'newListener',
  //移除监听器
  'removeListener'
];

var flags = [
  'json',
  'volatile',
  'broadcast'
];

var emit = Emitter.prototype.emit;

//顶层Socket构造函数,对应一个客户端对指定命名空间的连接
function Socket(nsp, client, query){
  //命名空间对象
  this.nsp = nsp;
  //服务对象
  this.server = nsp.server;
  //命名空间适配器
  this.adapter = this.nsp.adapter;
  //id,如果不是根命名空间,则为空间名称加上#加上客户端id,否则为客户端id
  this.id = nsp.name !== '/' ? nsp.name + '#' 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值