zoukankan      html  css  js  c++  java
  • [FMS开发笔记]理解应用程序实例(聊天室房间的划分)

     
        在制作聊天室,斗地主游戏等这样的Flash/FMS程序时,可能会涉及到划分房间的问题,比如二个房间的游戏规则相同,功能相同,但是二个房间的数据独立,互不影响。
     
        那么这种应用,就涉及到应用程序实例了,如以下。
     
        nc.connect("rtmp://myDomain.com/chat_app/room_01") 
        nc.connect("rtmp://myDomain.com/chat_app/room_02")
     
        chat_app是一个聊天室程序,room_01和room_02就是chat_app的两个不同实例,整个地址的格式是:

        protocol:[//host][:port]/appname/[instanceName]
     
        地址中的[instanceName]以方括弧表示可有可无,但是不管这个"instanceName"有没有,它都会连接到了一个实例。
        就是说,任何一个客户机连接到一个应用程序时,这个客户机实际上都是连接到一个应用程序实例(application instances)的。
     
        比如我们一般的写法:

        nc.connect("rtmp://myDomain.com/my_app");
     
        本质上他和以下的做法是等同的:

        nc.connect("rtmp://myDomain.com/chat_app/_definst_");
     
        即在这种情况下,默认连接的实例为"_definst_",并不代表没有实例。
     
        那么我们就要好好理解一下“实例”,做过高级语言开发的,就很好理解,就象一个类有多个实例一样,它们具有同样的“规则”,但是具有各自不同的“数据”。
     
        一个实例不需要在服务器上定义它自己的目录。应用程序的资源,比如流和共享对象,对于每个实例而言都是独立的,并且是被存储在这个应用程序的流和共享对象目录下的它们各自的目录中的,比如实例room_01使用的SharedObject对象(比如叫"my_rso"),会存储在"\chat_app\sharedobjects\room_01\my_rso.fso"。
     
        使用应用程序实例的另一个原因是可以避免由这个应用程序创建的记录流或共享对象的冲突。例如,在上面的例子中,room_01和room_02都使用main.asc中的程序规则和逻辑,但是他们的数据各自独立,互不影响。由room_01创建的任何流或共享对象与由room_02创建的都是截然不同的,虽然这两个实例都是运行在同一个应用程序chat_app。


  • 相关阅读:
    linux查看CPU和内存信息
    linux yum命令详解
    查看文件中关键字前后几行的内容
    vue.js+web storm安装及第一个vue.js
    android GPS: code should explicitly check to see if permission is available
    ASP.NET MVC Identity 使用自己的SQL Server数据库
    阿里云服务器,tomcat启动,一直卡在At least one JAR was scanned for TLDs yet contained no TLDs就不动了
    ASP.NET MVC4 MVC 当前上下文中不存在名称“Scripts”
    python 将windows字体中的汉字生成图片的方法
    Java android DES+Base64加密解密
  • 原文地址:https://www.cnblogs.com/yao/p/1085654.html
Copyright © 2011-2022 走看看