35 lines
		
	
	
		
			737 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			737 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| var Buffer = require('safe-buffer').Buffer;
 | |
| 
 | |
| var Message = function() {
 | |
|   this.rsv1    = false;
 | |
|   this.rsv2    = false;
 | |
|   this.rsv3    = false;
 | |
|   this.opcode  = null;
 | |
|   this.length  = 0;
 | |
|   this._chunks = [];
 | |
| };
 | |
| 
 | |
| var instance = {
 | |
|   read: function() {
 | |
|     return this.data = this.data || Buffer.concat(this._chunks, this.length);
 | |
|   },
 | |
| 
 | |
|   pushFrame: function(frame) {
 | |
|     this.rsv1 = this.rsv1 || frame.rsv1;
 | |
|     this.rsv2 = this.rsv2 || frame.rsv2;
 | |
|     this.rsv3 = this.rsv3 || frame.rsv3;
 | |
| 
 | |
|     if (this.opcode === null) this.opcode = frame.opcode;
 | |
| 
 | |
|     this._chunks.push(frame.payload);
 | |
|     this.length += frame.length;
 | |
|   }
 | |
| };
 | |
| 
 | |
| for (var key in instance)
 | |
|   Message.prototype[key] = instance[key];
 | |
| 
 | |
| module.exports = Message;
 |