
ADOBE FLASH MEDIA INTERACTIVE SERVER
Server-Side ActionScript Language Reference
84
You c an a l s o c a l l SharedObject.get() to get a reference to a shared object that is in a namespace of another appli-
cation instance. This instance can be on the same server or on a different server and is called a proxied shared object.
To get a reference to a shared object from another instance, create a NetConnection object and use the
NetCon-
nection.connect()
method to connect to the application instance that owns the shared object. Pass the NetCon-
nection object as the
netConnection parameter of the SharedObject.get() method. The server-side script must
get a reference to a proxied shared object before there is a request for the shared object from any client. To do this,
call
SharedObject.get() in the application.onAppStart() handler.
If you call
SharedObject.get() with a netConnection parameter and the local application instance already has a
shared object with the same name, the shared object is converted to a proxied shared object. All shared object
messages for clients that are connected to a proxied shared object are sent to the master instance.
If the connection state of the NetConnection object that was used as the
netConnection parameter changes state
from connected to disconnected, the proxied shared object is set to idle and any messages received from subscribers
are discarded. The
NetConnection.onStatus() handler is called when a connection is lost. You can then
reestablish a connection to the remote instance and call
SharedObject.get(), which changes the state of the
proxied shared object from idle to connected.
If you call
SharedObject.get() with a new NetConnection object on a proxied shared object that is already
connected, and if the URI of the new NetConnection object doesn’t match the current NetConnection object, the
proxied shared object unsubscribes from the previous shared object, sends a
clear event to all subscribers, and
subscribes to the new shared object instance. When a subscribe operation to a proxied shared object is successful, all
subscribers are reinitialized to the new state. This process lets you migrate a shared object from one application
instance to another without disconnecting the clients.
Updates received by proxied shared objects from subscribers are checked to see if the update can be rejected based
on the current state of the proxied shared object version and the version of the subscriber. If the change can be
rejected, the proxied shared object doesn’t forward the message to the remote instance; the reject message is sent to
the subscriber.
The corresponding client-side ActionScript method is
SharedObject.getRemote().
Example
The following example creates a shared object named
foo in the function onProcessCmd(). The function is passed
a parameter,
cmd, that is assigned to a property in the shared object.
function onProcessCmd(cmd){
// Insert code here.
var shObj = SharedObject.get("foo", true);
propName = cmd.name;
shObj.getProperty (propName, cmd.newAddress);
}
The following example uses a proxied shared object. A proxied shared object resides on a server or in an application
instance (called master) that is different from the server or application instance that the client connects to (called
proxy). When the client connects to the proxy and gets a remote shared object, the proxy connects to the master and
gives the client a reference to this shared object. The following code is in the main.asc file:
application.appStart = function() {
nc = new NetConnection();
nc.connect("rtmp://" + master_server + "/" + master_instance);
proxySO = SharedObject.get("myProxy",true,nc);
// Now, whenever the client asks for a persistent
// shared object called myProxy, it receives themyProxy
// shared object from master_server/master_instance.
};
Komentarze do niniejszej Instrukcji