Flash Communication Server筆記一

來源:互聯網
上載者:User

     要進行FCS應用程式的開發,必須安裝Macromedia Flash MX,Flash Communication Server,以及最近發布的Flash Player。如果應用程式中需要抓取視頻或者音頻,還需要安裝麥克風和網路攝影機。此外,如果應用程式需要撰寫服務端指令碼,像Macromedia DreamweaverMX這樣,支援UTF-8編碼的javascript編輯器也將需要安裝。
      下面讓我們一起來學習一下怎樣設定flashCommunicationServer的開發環境,怎樣部署你的應用程式,最後讓我們一起來建立一個簡單的串連到伺服器的應用程式。下面讓我們一起來學習一下怎樣設定flashCommunicationServer的開發環境,怎樣部署你的應用程式,最後讓我們一起來建立一個簡單的串連到伺服器的應用程式。
          在開始開發FCS應用程式之前,下列知識是必須知道的。
   FCS伺服器是否正在運行?如果要發布或者測試應用程式,FCS伺服器必須運行。
   指定伺服器的URI。如果FlashMX和FCS安裝在同一台電腦上,可以這樣指定串連到伺服器的URI:
  new_nc.connect(“rtmp:/doc_record/room_01”);
  否則,需要指定伺服器真實的的URI(例如,伺服器運行在myServer.myDomain.com上),可以這樣指定fcs串連:
New_nc.connect(“rtmp://myServer.myDomain.com/doc_record/room_01”);
   注意:確定rtmp後面是雙斜線,只有在swf檔案和FCS在同一電腦上時才可以使用單斜線。
  指定發布格式。FlashMX可以將應用程式發布為swf檔案或者html檔案。選擇檔案>發布設定可以在發布時指定發布的格式。
  撰寫用戶端AS代碼。除非另有說明,用戶端AS代碼都應該寫在FLA檔案的第一幀的某layer上,而不是一個單獨的對象。
  撰寫伺服器段AS代碼。如果應用程式有伺服器段代碼,它應該放在伺服器段指令檔之中。這個檔案通常被命名為main.asc(或者類似registered_app_name.asc的檔案名稱)。使用DWMX或者其他的javascript編輯器撰寫撰寫伺服器段代碼,請注意,伺服器段代碼同樣是大小寫敏感的。
   載入component.asc。如果在應用程式中使用了通訊群組件,必須載入位於scriptlib目錄中的commponents.asc。
那麼,怎樣載入該檔案了?首先建立一個伺服器段指令檔並儲存為合適的檔案名稱(例如main.asc),然後在檔案的頂部增加下列代碼:
Load(“components.asc”);
    小技巧:你可以複製應用的組件檔案到應用程式目錄下。
   初始化用戶端代碼:在每個FLA檔案的第一行增加下列代碼:
    #include “Netdebug.as”
   它可以讓我們使用NetConnection調試器來跟蹤streams或者shared objects在應用程式中的使用方式。在任何時候,你都可以刪除這一行代碼。
    尊重使用者的隱私。在開始記錄或者廣播任何圖片或者聲音,都應該獲得圖片/聲音所有者的許可。
     監視啟動並執行程式:如果你是伺服器的管理員,在程式運行期間,你可以查看程式的詳細情況,比如log資訊,so的值等等。在flashMX中開啟Communictaion APP inspector面板,串連到FCS,選擇要查看的應用程式執行個體,選擇view Detail。

   下面我們將通過實際製作一個FCS應用程式來認識FCS應用程式的開發過程。
    下表列出了開發該應用程式需要完成的任務: 
      1、    為應用程式命名,並且在伺服器上註冊該應用程式。假如應用程式名稱為my_app,在FCS的applications目錄下,建立一個以my_app命名的目錄,my_app即在FCS上註冊的應用程式名稱,而my_app目錄就是註冊的應用程式目錄。
    2、    在FlashMX中,建立一個FLA檔案,它應該包含對新註冊的應用程式my_app的URI的串連。通過建立一新NetConnection來完成這一步驟,如下.
My_nc:NetConnection=New NetConnection();
My_nc.connect(“rtmp://mydomain/my_app”);
     3、    儲存該FLA檔案。你可以將它儲存在任何地方。在部署應用程式時,只需要FLA發布的swf檔案。
   4、    如果包括伺服器端AS,需要將該指令檔放在FCS伺服器上的my_app目錄下或者該目錄的/scripts目錄下。該檔案應該被命名為main.asc或者my_app.asc。
   5、    發布swf檔案。Swf檔案不需要放在fcs伺服器上。你可以將它放在任何客戶可以接觸到的地方,比如,你可以通過email將該檔案發送給你的客戶。
      或者,你的應用程式還有更多的步驟,不過無論如何,上述步驟對任何一個FCS應用程式來說都是必須的。
      小技巧:Macromedia推薦使用不包括空格的小寫字母為應用程式命名,這樣無論你的應用程式在哪一種平台(windows/linux/macOS)上都可以正常使用。

     下面將介紹如何讓FCS應用程式資料能被伺服器找到,以及怎樣運行該應用程式執行個體。
      儲存伺服器端檔案和用戶端檔案
      應用程式的服務端檔案的預設位置在windows平台下應該在C:/Program files/Macromedia/Flash Communication Server MX/applications。通常,FCS應用程式應該放在該目錄下的一個與應用程式同名的子目錄下。在該子目錄下放置應用程式資料——ASC檔案,儲存的流檔案(flv),以及遠程SO檔案(FSO)。
      至於用戶端檔案(SWFs和HTMLs),可以放在任何地方(通常都放在web伺服器上),至於FLA檔案,僅在開發應用程式時需要,發布時應該將該檔案排除在外——最好是把該檔案放在安全的地方。
       在開發期間,可以將這些檔案都放在一塊。在發布應用程式時,ASC、FSO以及FLV檔案必須保留在伺服器上的應用程式目錄中,只有swf和html檔案需要發放給客戶。

    在任何一個案例中,都必須在applications目錄下為應用程式建立一個同名的目錄(即使應用程式沒有伺服器端指令碼,因為FCS需要儲存流檔案或者shared object檔案在該目錄中),當用戶端發送NetConnection.connect命令時可以找到應用程式。
下面的例子中,假設使用者調用chat_app應用程式。
NetConnection.connect(“rtmp://myDomain/chat_App”);

    注意:伺服器端指令檔的副檔名也可以是.js,如果這樣,你可以把伺服器端指令檔放在應用程式目錄下的scripts目錄下。

     使用應用程式執行個體
FCS應用程式的執行個體類似於ASP應用程式中的Session(會話),應用程式通過建立應用程式執行個體運行。當某個用戶端串連到應用程式,它實際上是串連到應用程式的一個執行個體。例如用戶端串連到一個名為chat_app的應用程式:
nc.connect(“rtmp://myDomain.com/chat_app”);
因為沒有指定執行個體,用戶端實際上串連到一個預設的名為_defInst_的執行個體。
    當然,也可以讓用戶端串連到指定的執行個體:
nc.connect(“rtmp://myDomain.com/chat_app/instance1”);
     在這裡,用戶端串連到的執行個體名為instance1。
    通過指定執行個體名,可以讓用戶端在應用程式下“分組活動”。比較常見的是聊天程式中,根據主題的不同把不同的客戶分成不同的房間(room),就像下面的例子中所展現的:
    My_nc.connect(“rtmp://myDomain /chatApp/room_01”);
    My_nc.connect(“rtmp://myDomain/chatApp/room_02”);
每個應用程式執行個體名都是獨一無二的,與執行個體所在的應用程式不同,單獨得執行個體不需要在伺服器上定義自己的目錄。可是,應用程式的資源,比如streams(流),shared objects,都獨立於所有的執行個體,並被儲存在自己的目錄(應用程式可以設定streams和so儲存的目錄)中。
    另一個使用執行個體的原因是,它可以避免應用程式在建立streams或者so是產生衝突。在上面的例子中,room_01建立的streams和so與room_2建立的stream、so是截然不同的,反之亦然,即使兩個執行個體都同時運行在chatApp應用程式中。
例如,雖然support應用程式中的下列代碼建立了兩個同樣名為CustomertInfo的so,support應用程式的不同執行個體都只會訪問他自己的CustomerInfo對象。同樣,session1和session2中的CustomerInfo資料是不同的。

first_nc = new NetConnection();
first_nc.connect("myserver.mydomain.com/support/session1");
first_so = SharedObject.getRemote("CustomerInfo", first_nc.URI, false);
first_so.connect(first_nc.URI);

second_nc = new NetConnection();
second_nc.connect("myserver.mydomain.com/support/session2");
second_so = SharedObject.getRemote("CustomerInfo", second_nc.URI, false);
second_so.connect(second_nc.URI);

    實際上,可以用任一字元串為應用程式中的執行個體命名。在FCS內建的教程中就有一個動態建立執行個體名的例子,代碼可以參考tutorial_textchat目錄下的tutorial_textchat.fla。
   你可以調整與應用程式執行個體相關的設定。通過修改Application.xml檔案比如執行個體逾時時間的設定。在vhost.xml檔案中,可以設定能夠串連到位於此虛擬機器主機上的應用程式的客戶數。
    除了使用FlashMX建立的檔案類型(fla,swf以及swd)之外,FCS使用或者建立下列檔案類型:
     ASC和JS檔案:由使用者創作並且提供給FCS的伺服器端指令檔,比如components.asc。
   fCS在/scriptlib目錄下提供了一個指令碼庫,包含了組件和Flash Remoting Services使用的伺服器端指令碼。當你和commpontent(組件)或者Flash Remoting Services一起使用FCS時,請從/scriptlib目錄中包含(include),或者載入(load)適當的指令碼到應用程式的伺服器端指令檔中。/scriptlib目錄的路徑由Application.xml設定檔中的<ScriptLibPath>標籤指定。

     FLV和IDX檔案:記錄streams(流)的檔案(flv),以及和flv關聯的索引檔案(IDX)。當伺服器開始記錄流時,他同時為指定的應用程式執行個體建立一個相應的子目錄,並將flv檔案和idx檔案存放在該目錄中,例如/applications/chat_app/streams/instance2
    Sol,sor以及fso檔案:記錄用戶端狀態、伺服器端狀態或兩者狀態的so檔案。So檔案儲存體的位置依賴於so對象的類別的不同而不同。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.