1. 程式人生 > >soket.io源碼分析(1):

soket.io源碼分析(1):

remove disco ast 引用 exp 文件的 height pub nod

我猜想這個就是源碼吧,有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.buildHandShake
9.emit
10.to/in
11.send/write
12.packet
13.leave
14.leaveAll
15.onconnect
16.onpacket
17.onevent
18.ack,onack
19.ondisconnect
20.onerror
21.onclose
22.error
23.disconnect
24.compress
25.dispatch
26.use
27.run。

soket.io源碼分析(1):