3 * Copyright(c) 2011 LearnBoost <dev@learnboost.com>
10 var WebSocket = require('./websocket');
13 * Export the constructor.
16 exports = module.exports = FlashSocket;
19 * The FlashSocket transport is just a proxy
20 * for WebSocket connections.
25 function FlashSocket (mng, data, req) {
26 return WebSocket.call(this, mng, data, req);
30 * Inherits from WebSocket.
33 FlashSocket.prototype.__proto__ = WebSocket.prototype;
41 FlashSocket.prototype.name = 'flashsocket';
44 * Listens for new configuration changes of the Manager
45 * this way we can enable and disable the flash server.
47 * @param {Manager} Manager instance.
52 FlashSocket.init = function (manager) {
56 // Drop out immediately if the user has
57 // disabled the flash policy server
58 if (!manager.get('flash policy server')) {
62 server = require('policyfile').createServer({
64 manager.log.info(msg);
66 }, manager.get('origins'));
68 server.on('close', function (e) {
72 server.listen(manager.get('flash policy port'), manager.server);
74 manager.flashPolicyServer = server;
77 // listen for origin changes, so we can update the server
78 manager.on('set:origins', function (value, key) {
81 // update the origins and compile a new response buffer
82 server.origins = Array.isArray(value) ? value : [value];
86 // destory the server and create a new server
87 manager.on('set:flash policy port', function (value, key) {
88 var transports = manager.get('transports');
89 if (~transports.indexOf('flashsocket')) {
91 if (server.port === value) return;
92 // destroy the server and rebuild it on a new port
96 catch (e) { /* ignore exception. could e.g. be that the server isn't started yet */ }
102 // create or destroy the server
103 manager.on('set:flash policy server', function (value, key) {
104 var transports = manager.get('transports');
105 if (~transports.indexOf('flashsocket')) {
106 if (server && !value) {
107 // destroy the server
111 catch (e) { /* ignore exception. could e.g. be that the server isn't started yet */ }
113 } else if (!server && value) {
119 // only start the server
120 manager.on('set:transports', function (value, key){
121 if (!server && ~manager.get('transports').indexOf('flashsocket')) {
125 // check if we need to initialize at start
126 if (~manager.get('transports').indexOf('flashsocket')){