I have a live streaming application running on FMS4. The application was working fine on FMS 3.5 we upgraded to FMS 4 and have some issues. The problem is:
- we use a Java web app for managing business logic which comunicates through AMF with the SSAS app on FMS 4.
- the java app queries the Flash Administration Server for stream stats. The Flash Admin returns in XML format data about the stream. One node of the XML contains the publisher's id which looks something like this: oAAFAAAA.
Suppose I want to disconnect the client, so I send a message to the SSAS application running on FMS telling it to disconnect the client with id oAAFAAAA. This was working on 3.5. The problem is that it appears that client.id on SSAS side from version 4 returns a number, for example 4702111234558869871. So I cannot disconnect them. How can I solve the naming id of the clients?
We apologize for the inconsistency we have in FMS right now in context of Client.id which you have pointed out and which is affecting your workflow. We are aware of this issue and it’s already filed as bug.
In 4.0 we changed it to return what is displayed in access log so users can correlate between the two. It used to be a string representation of some internal id (not useful to end user). Now it is the external id that
you see in the logs. We changed SSAS, Access & Auth to reflect and return id in new form but Admin API got left out & hence the bug.
Would you be kind enough to drop me an email to my id: email@example.com and giving your contact details & severity of this problem in your business workflow? I will send the same information to Engineering team - it might help them reassess priority of the bug and if possible get a fix in one of upcoming dot release.
for anyone else searching for how to do this conversion in AS, I found a hack workaround, using the LongInt class found here: http://code.google.com/p/lodgamebox/source/browse/trunk/com/lordofduct /util/LongInt.as
var clientIDString:String = "4702111234525315439"; //should equal oAADAAAA var longInt:LongInt = new LongInt(clientIDString); var bytes:ByteArray = new ByteArray(); longInt.writeToByteArray(bytes); bytes.position = 0; trace(bytes.toString()); // prints AAAADAAo, so just need to reverse it