:frown; I have been given a research task by my boss. I am NOT (yet) an experienced FMS programmer, and I have been tasked with finding out how to do the following. We need to collect live audio/video and screen capture data from numerous distributed sources all recording at the same time (the same event, actually) and securly collect it at multpiple locations, insuring that each location is fully syncronized with the other(s). The idea was to have complete sets of all the data stored on multiple servers, for a few reasons, including security, backup and load sharing. Now, I gather that the best way to do this is by using one or two origin servers and using edge servers at the remote sites to do the load balancing. But everything that I have been able to find has been geared to the servers satisfying requests [u]for[/u] data, not collecting data [u]from[/u] the clients. We are already using a FMS to collect data from multiple camera, microphone and screen capture feeds at a single physical location. Is expanding this to handle feeds from multiple distributed locations as simple as establishing a one or two origin server farm and setting up a series of edge servers to reroute the traffic? And if I use two origin servers, how do I insure that they stay mirrored and that data streams from a common event, coming in from different edge servers are all combined into a single event database? I don't start small. You should see the first wood floor I ever layed! :grin; If I could be redirected to white papers or the like, that would be great. Thanks for your help.
One quick way of synchronizing several different FMS:es is to set up a SharedObject on each FMS holding the data to be synchronized and letting all FMS:es connect to each other's SO:s (or all connect through a central "server" FMS). /Johan
Okay, I'll look into shared objects. I guess the issue here would be recognizing when the second server creates a shared object that it is actually related to one that is already in existance on the other server. Maybe the way this should work is that when a new event is initiated, shared objects are simultaneously created on both servers. Then, when clients calling in to the second server get established, they would connect to the already existing object.
Another way to accomplish this is to let the servers connect to each other and call methods on the connections. You'd have to set up a command structure like: nc.call("syncData", callbackFunction, {dataAddress:object/property, dataValue:value}...etc. /Johan
Okay, that's interesting. Unfortunately I don't have enough experience with this to really understand where you're going.
I haven't done it server to server but according to documentation it should work the same way as client to server. Create a named reference to all SO:s to synchronize: ---------------------------------- application.syncSo = {}; syncSo["mySo"] = mySo; ---------------------------------- Server 1 listens to server 2: application.onConnect(client, params) { if(params.type=="server") { client.synchronize = function(dataAddress, dataName, dataValue) { application.syncSo[dataAddress].setProperty(dataName, dataValue); return true; } } ---------------------------------- Server 2 calls server 1: var syncNc = new NetConnection(); syncNc.synchronize = function(dataAddress, dataName, dataValue) { application.syncSo[dataAddress].setProperty(dataName, dataValue); return true; } syncNc.connect(server2Url, {type:"server"}); ---------------------------------- Server 2 calls synchronize: syncNc.call("synchronize", myCallbackObject, "mySo", "myProp", "myVal"); ---------------------------------- It's untested but it should work.
Johan, I am really feeling stupid now. application.syncSo does not show up in either my client-side or server-side action script references. I am looking at the PDF references published by Adobe for Flash Media Server 2 dated 11/4/2005. Have I got the wrong references?
application.syncSo is just a variable I declared above: application.syncSo = {}; //( {} is shorthand for new Object(); I use it as sort of a global name-value-collection.
Don't see what you're looking for? Try a search.
|