/** * @provides javelin-aphlict * @requires javelin-install * javelin-util */ /** * Simple JS API for the Flash Aphlict client. Example usage: * * var aphlict = new JX.Aphlict('aphlict_swf', '127.0.0.1', 2600) * .setHandler(function(type, message) { * JX.log("Got " + type + " event!") * }) * .start(); * * Your handler will receive these events: * * - `connect` The client initiated a connection to the server. * - `connected` The client completed a connection to the server. * - `close` The client disconnected from the server. * - `error` There was an error. * - `receive` Received a message from the server. * * You do not have to handle any of them in any specific way. */ JX.install('Aphlict', { construct : function(id, server, port) { if (__DEV__) { if (JX.Aphlict._instance) { JX.$E('Aphlict object is sort of a singleton..!'); } } JX.Aphlict._instance = this; this._server = server; this._port = port; // Flash puts its "objects" into global scope in an inconsistent way, // because it was written in like 1816 when globals were awesome and IE4 // didn't support other scopes since global scope is the best anyway. var container = document[id] || window[id]; this._flashContainer = container; }, members : { _server : null, _port : null, start : function() { this._flashContainer.connect(this._server, this._port); } }, properties : { handler : null }, statics : { _instance : null, didReceiveEvent : function(type, message) { if (!JX.Aphlict._instance) { return; } var handler = JX.Aphlict._instance.getHandler(); if (handler) { handler(type, message); } } } });