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