4.Server广播data给所有Client
应用范例:当有人断线时,由server端广播所有client,让所有client都能同步更新client名单
说明:以上范例来说,当clinet无预警的断线,只有Server上的application.onDisconnect 这handler
会被触发,也就是说你需要在这handler内写一些程序去广播通知给所有的client。
如何广播?有以下两种做法
1.把数据放在remote SharedObject对象内,只要SO对象内容更动,即自动触发Client端的so.onSync
将在线人员名单写在remote SharedObject对象内,当有人断线,只要把so内该笔数据剔除掉,因为
so内容改变,因此所有Client端的so.onSync 这handler将被触发,即可达到你要更新数据的目的。
Server端
application.onDisconnect=function(newClient){
userlist_so.setProperty(newClient.name,"");
}
注:相对的当server端无预警的断线,client端可由nc.onStatus这handler内由判断info.code来取
得信息
2.当数据不是存在so内时,只是存在server端的一个变量上,可以善加利用application.clients来对
所有client广播。以下会触发所有client端上的client_fun,并把server上的sendvar变量带过去
server端:
application.onDisconnect=function(newClient){
for(var i=0;i
application.clients[i].call("client_fun",null,sendvar);
}
}
Client端:
nc.client_fun=function(myvar){ }
增加一个广播的方法
Server 端传送给有getRemote 同一个ShareObject 的Client 端
Server 端:
application.abc_so = SharedObject.get("abc_so", false);
application.abc_so.send("msgFromSrvr", msg);
Client 端:
abc_so = SharedObject.getRemote("abc_so", abc_nc.uri, false);
abc_so.msgFromSrvr = function(msg) {
showMsg(msg);
};