You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							47 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							47 lines
						
					
					
						
							1.3 KiB
						
					
					
				// API references: | 
						|
// | 
						|
// * https://html.spec.whatwg.org/multipage/comms.html#network | 
						|
// * https://dom.spec.whatwg.org/#interface-eventtarget | 
						|
// * https://dom.spec.whatwg.org/#interface-event | 
						|
 | 
						|
'use strict'; | 
						|
 | 
						|
var util   = require('util'), | 
						|
    driver = require('websocket-driver'), | 
						|
    API    = require('./websocket/api'); | 
						|
 | 
						|
var WebSocket = function(request, socket, body, protocols, options) { | 
						|
  options = options || {}; | 
						|
 | 
						|
  this._stream = socket; | 
						|
  this._driver = driver.http(request, { maxLength: options.maxLength, protocols: protocols }); | 
						|
 | 
						|
  var self = this; | 
						|
  if (!this._stream || !this._stream.writable) return; | 
						|
  if (!this._stream.readable) return this._stream.end(); | 
						|
 | 
						|
  var catchup = function() { self._stream.removeListener('data', catchup) }; | 
						|
  this._stream.on('data', catchup); | 
						|
 | 
						|
  API.call(this, options); | 
						|
 | 
						|
  process.nextTick(function() { | 
						|
    self._driver.start(); | 
						|
    self._driver.io.write(body); | 
						|
  }); | 
						|
}; | 
						|
util.inherits(WebSocket, API); | 
						|
 | 
						|
WebSocket.isWebSocket = function(request) { | 
						|
  return driver.isWebSocket(request); | 
						|
}; | 
						|
 | 
						|
WebSocket.validateOptions = function(options, validKeys) { | 
						|
  driver.validateOptions(options, validKeys); | 
						|
}; | 
						|
 | 
						|
WebSocket.WebSocket   = WebSocket; | 
						|
WebSocket.Client      = require('./websocket/client'); | 
						|
WebSocket.EventSource = require('./eventsource'); | 
						|
 | 
						|
module.exports        = WebSocket;
 | 
						|
 |