我猜想这个就是源码吧,有index.js还有其他js文件的。
node-modules模块
socket.js
1.模块依赖
var Emitter = require(‘events‘).EventEmitter;var parser = require(‘socket.io-parser‘);var url = require(‘url‘);var debug = require(‘debug‘)(‘socket.io:socket‘);var assign = require(‘object-assign‘); 2.黑名单事件说是public的。
exports.events = [ ‘error‘, ‘connect‘, ‘disconnect‘, ‘disconnecting‘, ‘newListener‘, ‘removeListener‘];用来干什么的?3.private是私有的
var flags = [ ‘json‘, ‘volatile‘, ‘broadcast‘];4.获得emit方法的引用。emit是调用监听器函数,如果事件被出发。
var emit = Emitter.prototype.emit;5.原型定义属性
function Socket(nsp, client, query){6.那么使用了EventEmitter的原型咯。那么_proto_属性就继承了对应的方法。
Socket.prototype.__proto__ = Emitter.prototype;
7.Object.defineProperty定义一个属性并返回对象。
/** * Apply flags from `Socket`. */ flags.forEach(function(flag){ Object.defineProperty(Socket.prototype, flag, { get: function() { this.flags[flag] = true; return this; } });});8.buildHandShake9.emit10.to/in11.send/write12.packet13.leave14.leaveAll15.onconnect16.onpacket17.onevent18.ack,onack19.ondisconnect20.onerror21.onclose22.error23.disconnect24.compress25.dispatch26.use27.run。
时间: 2024-10-06 00:31:02