| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | // 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;
 |