Initial commit
[yaffs-website] / node_modules / websocket-driver / lib / websocket / driver.js
1 'use strict';
2
3 // Protocol references:
4 // 
5 // * http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-75
6 // * http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76
7 // * http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17
8
9 var Base   = require('./driver/base'),
10     Client = require('./driver/client'),
11     Server = require('./driver/server');
12
13 var Driver = {
14   client: function(url, options) {
15     options = options || {};
16     if (options.masking === undefined) options.masking = true;
17     return new Client(url, options);
18   },
19
20   server: function(options) {
21     options = options || {};
22     if (options.requireMasking === undefined) options.requireMasking = true;
23     return new Server(options);
24   },
25
26   http: function() {
27     return Server.http.apply(Server, arguments);
28   },
29
30   isSecureRequest: function(request) {
31     return Server.isSecureRequest(request);
32   },
33
34   isWebSocket: function(request) {
35     if (request.method !== 'GET') return false;
36
37     var connection = request.headers.connection || '',
38         upgrade    = request.headers.upgrade || '';
39
40     return request.method === 'GET' &&
41            connection.toLowerCase().split(/ *, */).indexOf('upgrade') >= 0 &&
42            upgrade.toLowerCase() === 'websocket';
43   },
44
45   validateOptions: function(options, validKeys) {
46     Base.validateOptions(options, validKeys);
47   }
48 };
49
50 module.exports = Driver;