eazy-pomelo
Version:
NetEase Pomelo Of EazyGame OEM
40 lines (34 loc) • 999 B
JavaScript
var EventEmitter = require('events').EventEmitter;
var util = require('util');
var utils = require('../../util/utils');
var TcpSocket = require('./tcpsocket');
var ST_STARTED = 1;
var ST_CLOSED = 2;
// private protocol, no need exports
var HEAD_SIZE = 4;
/**
* websocket protocol processor
*/
var Processor = function(closeMethod) {
EventEmitter.call(this);
this.closeMethod = closeMethod;
this.state = ST_STARTED;
};
util.inherits(Processor, EventEmitter);
module.exports = Processor;
Processor.prototype.add = function(socket, data) {
if(this.state !== ST_STARTED) {
return;
}
var tcpsocket = new TcpSocket(socket, {headSize: HEAD_SIZE,
headHandler: utils.headHandler,
closeMethod: this.closeMethod});
this.emit('connection', tcpsocket);
socket.emit('data', data);
};
Processor.prototype.close = function() {
if(this.state !== ST_STARTED) {
return;
}
this.state = ST_CLOSED;
};