虽然设置了一个sharedObject的persistence属性为true,但是客户端断开,然后再连接的时候,这个sharedobject的属性似乎不能持久化保存,除非总有一个客户端一直在线,维持着这个sharedobject。
解决问题的关键貌似就是在断开的时候保存到另一个sharedobject中,这个sharedobject不要参与和客户端的通讯。似乎当前和客户端共用的sharedobject,客户端断开时总会消失,或属性不能持久。总之用另一个独立的只在服务器端的sharedobject来保存是可行的。
那就需要设置三个So,1、是服务器端永久的So,称为allso;2、暂时的tmso;3、暂时的tmso2.
机制是:用tmso2真正用于和客户端的连接共享,那两个so用于保存。
1、在tmso2更新时,让tmso等于它。也就是说tmso在客户端tmso2连上之后,就一直同步等于tmso2,是tmso2在服务器端的一个替身。
2、在tmso2断开时,设置函数让tmso2的替身,也就是tmso的内容全部加入allso的内容中。这样allso就会保存全部的数据。
这里的问题是,tmso2断开时,直接把自己的属性内容复制到allso中不行吗?我做了实验,好像是在tmso2断开调用函数onDisconnect时,tmso2本身就没有了,它就没法控制tmso2本身了,但是可以控制它的替身tmso。
我用的是开源的fluorinefx,学习没有多久,上面仅仅是自己的感觉,不知道大家怎么看?