Union Features
Existence is social. Applications should be too. But traditionally, it's been hard to build realtime collaborative applications. Collaborative features require special expertise to design, and take lots of time to produce and maintain. Lack of resources and prohibitive costs regularly force multiuser interactivity out of applications and games, relegating users to isolated, solitary experiences.
Union changes that.
Union takes the heavy lifting out of connected-application development. Using Union, developers with standard web-development skills can create collaborative content cost-effectively and quickly.
Union handles low-level networking and data-synchronization responsibilities, and provides a rich, intuitive communications layer that lets developers focus on application logic, not packets and protocols.
With Union, applications that would take experts weeks or months to build can be finished in hours or days.
Here's how Union Platform can bring your users together...
- Beautiful API
- Union code is simple, clean, elegant, and intuitive. Dramatically reduce your development costs and time. Depend on Union's architecture to give your application a sensible, sustainable structure.
- Colossal Scale
- Run tens of thousands of clients on a single Union Server instance, or millions of clients across a Union Cluster. Union is regularly tested in production deployments with hundreds of thousands of simultaneously connected clients. (Read all about it in the Union Cluster documentation.)
- Battle-tested
- Union Server has been in development since 2001, providing ironclad connectivity to countless millions of clients for over a decade. Union powers Megaphone, an interactive television and out-of-home platform that runs thousands of deployments for NBC, the Weather Channel, and dozens of major-league sports teams across the NBA, NFL, NHL, and MLB.
- Cross-platform
- Union Platform includes official client frameworks for JavaScript/HTML5 and Adobe® Flash®. Client applications can also be created in the language of your choice. Server-side logic can be written in Java or JavaScript, or any scripting language that has a Java scripting engine (eg. Javascript, Python, Ruby, PHP).
- Free for 1000 concurrent users
- Union is entirely free for up to 1000 concurrent users, for both commercial and noncommercial projects. It doesn't time out. You don't have to register. You don't have to put a Union logo on your site. We don't want your email. We want you to build multiuser apps.
- Get Started in Minutes
- Take Union for an instant test drive using tryunion.com, a freely available public testing server. There's nothing to buy. Nothing to install. No server ports to configure. No command lines, no shell scripts. Just connect and code.
- Hosted Platform-as-a-Service (PaaS) Deployment
- Run Union applications with no server install in a hassle-free environment on Union Cloud.
- Live distributed object model
- Union is deeply object-oriented, with a distributed object model that lets you work with remote objects as though they were local resources. For example, when a client wants to create a server-side Room object, it simply instantiates a local Room object, like this:
var room:Room = roomManager.createRoom("exampleRoom");
Behind the scenes, Union Server creates a corresponding server-side Room object. The client can then immediately begin working with its local Room object by calling methods and setting attributes:
// Join the room room.join(); // Set the topic to "Thursday Meeting" room.setAttribute("topic", "Thursday Meeting");
Transparently, Union adds the client to the room, updates the server-side Room object, and automatically shares those changes with other connected clients. Clients don't have to worry about the complexities of messaging the server or synchronizing state with other clients. All objects are automatically kept up-to-date, and object-lifecycle is fully managed. When an object goes out of scope, it is automatically cleaned up by the client and server.
- Group users together in rooms
- Manage group activities with rooms that users can join or spectate. Perfect for a setting up lobbies, game instances, and shared interactions such as collaborative document editing. Create rooms with client code, server-side configuration files, or custom server code.
- Share data
- Use client attributes or room attributes to automatically share information among users. Set a user's age, high score, or favourite food and watch the information propagate instantly to other interested users. To control the amount of information that is shared among clients, set update levels, or simply turn off sharing. Union automatically manages traffic and memory usage by limiting transfer of shared data to each client's "awareness bubble" (knowledge of server state).
- Built-in user accounts
- Grow user loyalty with user accounts. Register, login, and store application data with an easy-to-use client API. Promote accounts to moderator status to grant configurable privileges such as kick and ban.
- Store data
- Use account attributes to store private and shared data for retrieval across multiple user visits or sessions. Save room attributes to track persistent world data, such as a high-score. Rely on Union's built-in database to manage stored data, or connect your own custom data source.
- Message management
- In a single method call, send a message to a specific user, a group of users, or all users on the server. Respond to incoming messages with listener functions. Filter messages for more advanced situations, such as team chat or privileged communications.
- Traditional polling
- Opt-out of data push, and load information on demand using Union's snapshot API. Perfect for reducing traffic under heavy load, or for generating periodically updated statistics, such as a web page listing the current matches on a game server.
- Elegant connection management
- Detect connection timeouts. Automatically reconnect broken connections. Keep track of connection attempt, failure, and success counts. Automatically failover to backup servers or ports. Configure heartbeat frequency to reduce traffic or detect connection failure more quickly. Connect to the same server over multiple gateway ports. Auto-kick clients that are unresponsive after a configurable server-side connection timeout.
- JavaScript WebSocket, Flash Socket, and HTTP
- Connect using persistent TCP JavaScript WebSockets, persistent TCP Flash sockets, or traditional HTTP, all on the same port, at the same time. Union's efficient "constant-contact" HTTP architecture minimizes bandwidth consumption and improves responsiveness.
- Firewall traversal
- When blocked by a firewall, Union clients automatically fallback to HTTP communications. If your user can browse the web, they can connect to Union.
- Highly extensible
- Write custom modules to add server-side logic to a room or the entire server. Write modules in Java, JavaScript, Python, Ruby, and other languages. Implement client application logic on top of official client frameworks, or create custom clients in your favorite language.
- Public, documented protocol
- Every message in Union's client/server protocol is publicly documented, allowing for deep debugging and custom client or server implementations.
- Secure
- Use server-side configuration options to restrict client-side privileges to administrators or moderators, or to completely disable potentially hazardous client-side capabilities.
- Spectation
- Watch what's happening to a client or observe the activity in a room. Choose what to spectate with update levels.
- Banning
- Ban client IP addresses programatically or through Union's administration tool.
- Logging
- Debug with confidence using Union's exhaustive, meticulous logs. Configure server-side log behavior using Apache log4j.
- Administration
- Manage rooms, clients, gateways, accounts, banned addresses, statistics, and the server log using Union Admin, Union's administration application.
- Exceptional documentation and examples
- Union's client docs are written by Colin Moock, author of five O'Reilly books, including the industry standard Essential ActionScript 3.0.
- Application-domain agnostic
- Union is not "just" a game server, not "just" a socket server, and not "just" a data-feed server. Union is as much at home sharing x-rays in a medical application as it is running a real-time election poll, a social network's virtual world, or multiplayer racing game. Union's API is applicable to any collaborative feature for any application domain.
To learn more about Union, see the Union Quick Start and Union Core Concepts.