123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- /*!
- * socket.io-node
- * Copyright(c) 2011 LearnBoost <dev@learnboost.com>
- * MIT Licensed
- */
- /**
- * Module requirements.
- */
- var WebSocket = require('./websocket');
- /**
- * Export the constructor.
- */
- exports = module.exports = FlashSocket;
- /**
- * The FlashSocket transport is just a proxy
- * for WebSocket connections.
- *
- * @api public
- */
-
- function FlashSocket (mng, data, req) {
- return WebSocket.call(this, mng, data, req);
- }
- /**
- * Inherits from WebSocket.
- */
- FlashSocket.prototype.__proto__ = WebSocket.prototype;
- /**
- * Transport name
- *
- * @api public
- */
- FlashSocket.prototype.name = 'flashsocket';
- /**
- * Listens for new configuration changes of the Manager
- * this way we can enable and disable the flash server.
- *
- * @param {Manager} Manager instance.
- * @api private
- */
- FlashSocket.init = function (manager) {
- var server;
- function create () {
- // Drop out immediately if the user has
- // disabled the flash policy server
- if (!manager.get('flash policy server')) {
- return;
- }
- server = require('policyfile').createServer({
- log: function(msg){
- manager.log.info(msg);
- }
- }, manager.get('origins'));
- server.on('close', function (e) {
- server = null;
- });
- server.listen(manager.get('flash policy port'), manager.server);
- manager.flashPolicyServer = server;
- }
- // listen for origin changes, so we can update the server
- manager.on('set:origins', function (value, key) {
- if (!server) return;
- // update the origins and compile a new response buffer
- server.origins = Array.isArray(value) ? value : [value];
- server.compile();
- });
- // destory the server and create a new server
- manager.on('set:flash policy port', function (value, key) {
- var transports = manager.get('transports');
- if (~transports.indexOf('flashsocket')) {
- if (server) {
- if (server.port === value) return;
- // destroy the server and rebuild it on a new port
- try {
- server.close();
- }
- catch (e) { /* ignore exception. could e.g. be that the server isn't started yet */ }
- }
- create();
- }
- });
- // create or destroy the server
- manager.on('set:flash policy server', function (value, key) {
- var transports = manager.get('transports');
- if (~transports.indexOf('flashsocket')) {
- if (server && !value) {
- // destroy the server
- try {
- server.close();
- }
- catch (e) { /* ignore exception. could e.g. be that the server isn't started yet */ }
- }
- } else if (!server && value) {
- // create the server
- create();
- }
- });
- // only start the server
- manager.on('set:transports', function (value, key){
- if (!server && ~manager.get('transports').indexOf('flashsocket')) {
- create();
- }
- });
- // check if we need to initialize at start
- if (~manager.get('transports').indexOf('flashsocket')){
- create();
- }
- };
|