mr.push
Joined: 17 Jan 2008 Posts: 25
|
Posted: Tue Apr 22, 2008 12:06 pm |
|
|
IF you are using iPush V2.5 Flash API and find your iPush application can't connect to iPush Server, you must check the version of the Flash Player in browser.
Since V9.0.115, the Flash Player had changed it's security policy (see the Adobe doc). So if your iPush Flash application runs in Flash Player V9.0.115 or later, the application may meet trouble on connecting to iPush Server.
To solve the problem, your codes need a little bit change for connecting function call, a workaround is illustrated below:
1. Find your iPush connecting function call, such as:
| Code: | _root.iplink.group = "ICEPOC";
_root.iplink.product = "quote";
_root.iplink.username = "quote";
_root.iplink.password = "quote";
_root.iplink.ipuship = "www.ipush.com";
_root.iplink.ipushport = 443;
_root.iplink.ipushTCPConnect(); |
2. Replace with:
| Code: | // detect flash player version
var playerVersion:String = System.capabilities.version;
var bkidx:Number = playerVersion.indexOf(" ");
var platform:String;
var majorVersion:String;
var minorVersion:String;
if (bkidx >= 0) {
platform = playerVersion.substring(0, bkidx);
var secondHalf:String = playerVersion.substring(bkidx+1, playerVersion.length);
var vers:Array = secondHalf.split(",");
majorVersion = vers[0];
minorVersion = vers[2];
}
var lastServer:String;
var lastPort:Number;
var drcID:Number;
function doRealConnect(server:String, port:Number, group:String, product:String, user:String, pass:String) {
clearInterval(drcID);
_root.iplink.group = group;
_root.iplink.product = product;
_root.iplink.username = user;
_root.iplink.password = pass;
_root.iplink.ipuship = server;
_root.iplink.ipushport = port;
var ret:Number = _root.iplink.ipushTCPConnect();
lastServer = server;
lastPort = port;
return ret;
}
function fpConnect(server:String, port:Number, group:String, product:String, user:String, pass:String) {
System.security.loadPolicyFile("xmlsocket://"+server+":"+port);
if (server == lastServer && port == lastPort) {
doRealConnect(server, port, group, product, user, pass);
return;
}
var sock:XMLSocket = new XMLSocket();
if (sock.connect(server, port)) {
sock.send("xver flash "+pjaxVersion+"\r\n");
}
sock.onConnect = function() {
this.send("\r\n");
this.close();
delete this;
}
var waitms = 1000;
if (majorVersion == "9" && minorVersion >= 115)
waitms = 5000; // special for 9.0.115 or later
drcID = setInterval(this, "doRealConnect", waitms, server, port, group, product, user, pass);
}
fpConnect("www.ipush.com", 443, "ICEPOC", "quote", "quote", "quote"); |
It should be fixed but need 5 seconds for connecting. |
|