More Books
Flash Communication Server
Flash Communication Server
Table of Contents
Copyright
About the Authors
Brian Lesser
Giacomo
Joey Lott
Robert Reinhardt
Justin Watkins
Foreword
Preface
What Does FlashCom Offer?
What's in This Book?
How to Use This Book
Audience
ActionScript 1.0 Versus ActionScript 2.0
Server-Side ActionScript
The flash-communications.net Site
Director, Breeze, and Other Options
Flash Video Options
Licensing and Hosting Options
Conventions Used in This Book
Voice
Using Code Examples
Safari Enabled
Comments and Questions
Acknowledgments
Part I:  FlashCom Foundation
Chapter 1.  Introducing the Flash Communication Server
Section 1.1.  Clients and Servers
Section 1.2.  Creating an Application
Section 1.3.  Real-Time Messaging Protocol
Section 1.4.  The Communication Classes
Section 1.5.  Communicating with Application Servers, Databases, and Directory Servers
Section 1.6.  Firewalls and Security
Section 1.7.  Getting Started
Section 1.8.  Hello Video!
Section 1.9.  Conclusion
Chapter 2.  Communication Components
Section 2.1.  Overview of Communication Components
Section 2.2.  Summary of Communication Components
Section 2.3.  Creating an Application that Monitorsa Connection
Section 2.4.  Building a Simple Chat Room
Section 2.5.  Adding Audio and Video to the Chat Room
Section 2.6.  Forgoing the SimpleConnect Component
Section 2.7.  Conclusion
Chapter 3.  Managing Connections
Section 3.1.  Making a Connection
Section 3.2.  Managing a Connection
Section 3.3.  Reusing a NetConnection Object
Section 3.4.  Multiple Simultaneous NetConnection Objects
Section 3.5.  Testing and Debugging Network Connections
Section 3.6.  Subclassing the NetConnection Class
Section 3.7.  Communication Components Without SimpleConnect
Section 3.8.  Conclusion
Chapter 4.  Applications, Instances, and Server-Side ActionScript
Section 4.1.  Scripting Application Instances
Section 4.2.  Differences Between Flash ActionScript and Server-Side ActionScript
Section 4.3.  The Life of an Application Instance
Section 4.4.  Running a Simple Hello World Test Script
Section 4.5.  A More Realistic Example
Section 4.6.  Instance-to-Instance Communications
Section 4.7.  Script Filenames and Locations in Detail
Section 4.8.  Testing and Debugging Server-SideScript Files
Section 4.9.  Designing Communication Applications
Section 4.10.  Conclusion
Part II:  Audio, Video, and Data Streams
Chapter 5.  Managing Streams
Section 5.1.  A Simple Publisher/Subscriber Example
Section 5.2.  Stream Names
Section 5.3.  Publishing Streams in Detail
Section 5.4.  Playing Streams in Detail
Section 5.5.  The Stream Class
Section 5.6.  Publishing and Playing ActionScript Data
Section 5.7.  Creating Synchronized Presentations
Section 5.8.  The NetStream and Stream Information Objects
Section 5.9.  Stream Enhancements and Limitations
Section 5.10.  Conclusion
Chapter 6.  Microphone and Camera
Section 6.1.  Working with Microphone/Audio Input
Section 6.2.  Working with Camera Input
Section 6.3.  Building a Message-Taking Application
Section 6.4.  Building a Surveillance Application
Section 6.5.  Conclusion
Chapter 7.  Media Preparation and Delivery
Section 7.1.  Audio and Video Compression
Section 7.2.  Converting Prerecorded Materialto FLV Format
Section 7.3.  Using Flash Pro's Media Components
Section 7.4.  Enabling Multiple Bit Rate FLVsWithin an Application
Section 7.5.  Streaming MP3 Audio
Section 7.6.  Conclusion
Part III:  Remote Connectivity and Communication
Chapter 8.  Shared Objects
Section 8.1.  Objects and Shared Objects
Section 8.2.  Getting a Shared Object in Flash
Section 8.3.  Updates and Frame Rates
Section 8.4.  Scripting Shared Objects on the Server
Section 8.5.  Temporary and Persistent Shared Objects
Section 8.6.  Proxied Shared Objects
Section 8.7.  Shared Objects and Custom Classes
Section 8.8.  Avoiding Collisions
Section 8.9.  Optimizing Shared Object Performance
Section 8.10.  Broadcasting Remote Method Callswith send( )
Section 8.11.  A Simple Video and Text Chat Application
Section 8.12.  Conclusion
Chapter 9.  Remote Methods
Section 9.1.  Why Use Calls?
Section 9.2.  The send( ) and call( ) Methods
Section 9.3.  Client-to-Server Calls
Section 9.4.  Server-to-Client Calls
Section 9.5.  Server-to-Server Calls
Section 9.6.  A Simple Lobby/Rooms Application
Section 9.7.  Debugging Calls
Section 9.8.  Advanced Topics
Section 9.9.  Conclusion
Chapter 10.  Server Management API
Section 10.1.  Connecting to the Admin Service
Section 10.2.  Using the Server Management API
Section 10.3.  Server Management API Uses
Section 10.4.  Conclusion
Chapter 11.  Flash Remoting
Section 11.1.  The Remoting Gateway
Section 11.2.  Remoting Basics
Section 11.3.  Role of Remoting in FlashCom Applications
Section 11.4.  Securing Access
Section 11.5.  Conclusion
Chapter 12.  ColdFusion MX and FlashCom
Section 12.1.  Understanding ColdFusion MXand Flash Remoting
Section 12.2.  Using Flash Remoting to Log Events
Section 12.3.  Getting a List of Streams
Section 12.4.  Using ColdFusion and FTP to Mirror Streams
Section 12.5.  Conclusion
Part IV:  Design and Deployment
Chapter 13.  Building Communication Components
Section 13.1.  Source Files
Section 13.2.  People Lists
Section 13.3.  A Simple People List
Section 13.4.  Listenable Shared Objects
Section 13.5.  Status and People List
Section 13.6.  Text Chat
Section 13.7.  Shared Text
Section 13.8.  Video Conference and Video Window
Section 13.9.  PeopleGrid
Section 13.10.  Summary
Section 13.11.  Conclusion
Chapter 14.  Understanding the Macromedia Component Framework
Section 14.1.  The Component Framework
Section 14.2.  Under the Hood of the Chat Component
Section 14.3.  Creating a Simple Component from Scratch: SharedTextInput
Section 14.4.  Creating a Container Component: SharedAddressForm
Section 14.5.  Creating an Authenticating Component
Section 14.6.  Integrating Components with Your Existing Applications
Section 14.7.  Understanding the Framework
Section 14.8.  Conclusion
Chapter 15.  Application Design Patterns and Best Practices
Section 15.1.  Shared Object Management
Section 15.2.  Moving Code to the Server
Section 15.3.  Building Façades on the Server
Section 15.4.  Server-Side Client Queues
Section 15.5.  A Framework for Recording and Playing Back Componentized Applications
Section 15.6.  Components and Component Frameworks
Section 15.7.  Conclusion
Chapter 16.  Building Scalable Applications
Section 16.1.  Coordinating Instances
Section 16.2.  Scalability and Load Balancing
Section 16.3.  Conclusion
Chapter 17.  Network Performance, Latency,and Concurrency
Section 17.1.  Latency
Section 17.2.  Bandwidth
Section 17.3.  Concurrency
Section 17.4.  Conclusion
Chapter 18.  Securing Applications
Section 18.1.  The Three A's: Authentication, Authorization, and Accounting
Section 18.2.  Authentication
Section 18.3.  Authorization
Section 18.4.  Accounting
Section 18.5.  Suggestions and References
Section 18.6.  Conclusion
Index
SYMBOL
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
R
S
T
U
V
W

Audience

My coauthors and I assume you have some experience with scripting in either Flash ActionScript, ECMAScript, or JavaScript, but the book is designed to meet the needs of a wide variety of readers with varying backgrounds and interests. Where ActionScript is discussed, familiarity with the Flash development environment is assumed. If you're new to the Flash authoring tool, you'll want to read Flash Out of the Box (O'Reilly). This book is not designed as an introductory step-by-step tutorial to programming in Flash. There is a wonderful and growing variety of books and sources on Flash programming. If you have little or no experience with ActionScript programming, you should consult ActionScript for Flash MX: The Definitive Guide and Essential ActionScript 2.0 (both from O'Reilly).

If you are looking for a step-by-step introduction to programming FlashCom, have a look at the introductory chapters of this book. If you feel they are over your head, consult the resources cited in the previous paragraph before returning to this book. Also consider books such as Flash Remoting: The Definitive Guide and the ActionScript Cookbook (also from O'Reilly) for targeted coverage of other areas of interest.

The book is not a printed version of the online documentation, nor does it attempt to reproduce materials on widely available topics, such as how to install FlashCom. Instead, it is designed to clarify and extend the information provided by Macromedia's documentation and web site. See in particular the documentation available at:

http://www.macromedia.com/support/documentation/en/flashcom/index.htm

This book was written by people who have used FlashCom and Macromedia's documentation from the earliest days of the product. We all had to struggle to understand just what Macromedia had given us and hope to help you avoid having to repeat all our early tests and experiments. The book is designed to be read and reread as your experience developing Flash communication applications increases.

The changes in Flash from versions 4 to 5 were revolutionary, and the changes from version 5 to MXamong them components and video supportwere also very dramatic. Flash MX 2004 introduced ActionScript 2.0 and added an entire new set of user interface components. ActionScript 2.0 added some features familiar to C++ and Java programmers, such as strong typing and formal classes.

In Chapter 1 through Chapter 12, the book's client-side ActionScript examples are written in both ActionScript 1.0 and ActionScript 2.0. From Chapter 13 onward, the client-side samples are written almost exclusively in ActionScript 2.0 and use the newer v2 Flash UI components. All server-side FlashCom code is written in Server-Side ActionScript, which uses ActionScript 1.0 syntax, because that is the only supported version.

Among the reasons for the mixture of ActionScript 1.0 (AS 1.0) and ActionScript 2.0 (AS 2.0) throughout the book:

  • The communication classes provided for client-side scripting, such as SharedObject, NetStream, and NetConnection, were all designed to use AS 1.0-style dynamic methods and properties. In Chapter 13, I show how to wrap shared objects up so that you can use AS 2.0, but that is an extra step and not something provided by Macromedia. Macromedia's communication components are available only in AS 1.0 and require the Flash UI client-side v1 components. For example, the Chat component's client-side code is written in AS 1.0 because the communication components were originally built for Flash MX and have not been updated to AS 2.0.

  • Server-Side ActionScript (SSAS) is JavaScript 1.5, which is very close to AS 1.0. The client-side classes such as SharedObject and NetConnection also exist on the server where AS 1.0 must be used to do the same sort of work you must do on the client such as setting up onStatus( ) or onSync( ) event handlers. That is, it is much easier to port client-side AS 1.0 code than AS 2.0 code to SSAS.

  • ActionScript 2.0 is a superset of ActionScript 1.0. I think this is something people coming from the Java world or just discovering the discipline of strong typing, formal class and interface definitions, and so on often forget. AS 2.0 code compiles down to the same bytecode as AS 1.0, allowing AS 2.0 code to be exported for use in Flash Player 6 (although Flash Player 6 doesn't support all the latest AS 2.0 classes). Regardless, ActionScript provides all the benefits of a simple scripting language, such as loose typing and dynamic objects, while offering the option of stronger typing and formal classes. AS 2.0 simply provides new options that are particularly valuable for larger-scale projects.

  • ActionScript 2.0 means different things to different developers. On the syntactic level, it means support for strict typing and different commands (such as import instead of #include). On the architectural level, it includes support for formal classes, packages, and interfaces. In the end, the purpose of the book is to teach FlashCom programming, not ActionScript 1.0 or 2.0. We didn't want to obscure the basics of FlashCom programming with a heavy reliance on object-oriented programming (OOP) and formal classes. This allows scripters of all levels to focus on the new FlashCom material.

  • Robust, deployment-ready code is not conducive to learning a topic. The book often presents pared-down examples, but the web site has full-blown code examples in both AS 1.0 and AS 2.0 format, when appropriate.