annotate node_modules/socket.io/lib/transports/flashsocket.js @ 70:753414e075a0

danger stash pop
author tzara <rc-web@kiben.net>
date Sat, 26 Oct 2013 13:43:08 +0000
parents 333afcfd3f3a
children
rev   line source
rc-web@69 1 /*!
rc-web@69 2 * socket.io-node
rc-web@69 3 * Copyright(c) 2011 LearnBoost <dev@learnboost.com>
rc-web@69 4 * MIT Licensed
rc-web@69 5 */
rc-web@69 6
rc-web@69 7 /**
rc-web@69 8 * Module requirements.
rc-web@69 9 */
rc-web@69 10 var WebSocket = require('./websocket');
rc-web@69 11
rc-web@69 12 /**
rc-web@69 13 * Export the constructor.
rc-web@69 14 */
rc-web@69 15
rc-web@69 16 exports = module.exports = FlashSocket;
rc-web@69 17
rc-web@69 18 /**
rc-web@69 19 * The FlashSocket transport is just a proxy
rc-web@69 20 * for WebSocket connections.
rc-web@69 21 *
rc-web@69 22 * @api public
rc-web@69 23 */
rc-web@69 24
rc-web@69 25 function FlashSocket (mng, data, req) {
rc-web@69 26 return WebSocket.call(this, mng, data, req);
rc-web@69 27 }
rc-web@69 28
rc-web@69 29 /**
rc-web@69 30 * Inherits from WebSocket.
rc-web@69 31 */
rc-web@69 32
rc-web@69 33 FlashSocket.prototype.__proto__ = WebSocket.prototype;
rc-web@69 34
rc-web@69 35 /**
rc-web@69 36 * Transport name
rc-web@69 37 *
rc-web@69 38 * @api public
rc-web@69 39 */
rc-web@69 40
rc-web@69 41 FlashSocket.prototype.name = 'flashsocket';
rc-web@69 42
rc-web@69 43 /**
rc-web@69 44 * Listens for new configuration changes of the Manager
rc-web@69 45 * this way we can enable and disable the flash server.
rc-web@69 46 *
rc-web@69 47 * @param {Manager} Manager instance.
rc-web@69 48 * @api private
rc-web@69 49 */
rc-web@69 50
rc-web@69 51
rc-web@69 52 FlashSocket.init = function (manager) {
rc-web@69 53 var server;
rc-web@69 54 function create () {
rc-web@69 55
rc-web@69 56 // Drop out immediately if the user has
rc-web@69 57 // disabled the flash policy server
rc-web@69 58 if (!manager.get('flash policy server')) {
rc-web@69 59 return;
rc-web@69 60 }
rc-web@69 61
rc-web@69 62 server = require('policyfile').createServer({
rc-web@69 63 log: function(msg){
rc-web@69 64 manager.log.info(msg);
rc-web@69 65 }
rc-web@69 66 }, manager.get('origins'));
rc-web@69 67
rc-web@69 68 server.on('close', function (e) {
rc-web@69 69 server = null;
rc-web@69 70 });
rc-web@69 71
rc-web@69 72 server.listen(manager.get('flash policy port'), manager.server);
rc-web@69 73
rc-web@69 74 manager.flashPolicyServer = server;
rc-web@69 75 }
rc-web@69 76
rc-web@69 77 // listen for origin changes, so we can update the server
rc-web@69 78 manager.on('set:origins', function (value, key) {
rc-web@69 79 if (!server) return;
rc-web@69 80
rc-web@69 81 // update the origins and compile a new response buffer
rc-web@69 82 server.origins = Array.isArray(value) ? value : [value];
rc-web@69 83 server.compile();
rc-web@69 84 });
rc-web@69 85
rc-web@69 86 // destory the server and create a new server
rc-web@69 87 manager.on('set:flash policy port', function (value, key) {
rc-web@69 88 var transports = manager.get('transports');
rc-web@69 89 if (~transports.indexOf('flashsocket')) {
rc-web@69 90 if (server) {
rc-web@69 91 if (server.port === value) return;
rc-web@69 92 // destroy the server and rebuild it on a new port
rc-web@69 93 try {
rc-web@69 94 server.close();
rc-web@69 95 }
rc-web@69 96 catch (e) { /* ignore exception. could e.g. be that the server isn't started yet */ }
rc-web@69 97 }
rc-web@69 98 create();
rc-web@69 99 }
rc-web@69 100 });
rc-web@69 101
rc-web@69 102 // create or destroy the server
rc-web@69 103 manager.on('set:flash policy server', function (value, key) {
rc-web@69 104 var transports = manager.get('transports');
rc-web@69 105 if (~transports.indexOf('flashsocket')) {
rc-web@69 106 if (server && !value) {
rc-web@69 107 // destroy the server
rc-web@69 108 try {
rc-web@69 109 server.close();
rc-web@69 110 }
rc-web@69 111 catch (e) { /* ignore exception. could e.g. be that the server isn't started yet */ }
rc-web@69 112 }
rc-web@69 113 } else if (!server && value) {
rc-web@69 114 // create the server
rc-web@69 115 create();
rc-web@69 116 }
rc-web@69 117 });
rc-web@69 118
rc-web@69 119 // only start the server
rc-web@69 120 manager.on('set:transports', function (value, key){
rc-web@69 121 if (!server && ~manager.get('transports').indexOf('flashsocket')) {
rc-web@69 122 create();
rc-web@69 123 }
rc-web@69 124 });
rc-web@69 125 // check if we need to initialize at start
rc-web@69 126 if (~manager.get('transports').indexOf('flashsocket')){
rc-web@69 127 create();
rc-web@69 128 }
rc-web@69 129 };