123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 'use strict';
-
- // Protocol references:
- //
- // * http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-75
- // * http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76
- // * http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17
-
- var Base = require('./driver/base'),
- Client = require('./driver/client'),
- Server = require('./driver/server');
-
- var Driver = {
- client: function(url, options) {
- options = options || {};
- if (options.masking === undefined) options.masking = true;
- return new Client(url, options);
- },
-
- server: function(options) {
- options = options || {};
- if (options.requireMasking === undefined) options.requireMasking = true;
- return new Server(options);
- },
-
- http: function() {
- return Server.http.apply(Server, arguments);
- },
-
- isSecureRequest: function(request) {
- return Server.isSecureRequest(request);
- },
-
- isWebSocket: function(request) {
- if (request.method !== 'GET') return false;
-
- var connection = request.headers.connection || '',
- upgrade = request.headers.upgrade || '';
-
- return request.method === 'GET' &&
- connection.toLowerCase().split(/ *, */).indexOf('upgrade') >= 0 &&
- upgrade.toLowerCase() === 'websocket';
- },
-
- validateOptions: function(options, validKeys) {
- Base.validateOptions(options, validKeys);
- }
- };
-
- module.exports = Driver;
|