FOT is coming up real soon… I’m co-presenting with Dominick for the Red5 workshop and I would like to know what you guys want to see? Since its an all-day thing, I would be glad to get some input from the community. Post your ideas as comments.
Tags: flash, flash on tap, flex, fot, Java, Red5
I am not sure how or if FMS provides a means for dynamic rooms, but Red5 does and I will try to explain how to use it below. For the following example, you should expect the following url – rtmp://localhost/myapp/room is being used. The method below is an overridden super class method from the Red5 application adapter. The example places a client into an id based “chat” room; the id algorithm could be anything you desire and is not fixed. I have used this block in a couple projects, one of which used an encrypted room and id portion and its url looked similar to this – rtmp://localhost/myapp/29c8109abd29e
@Override
public boolean roomJoin(IClient client, IScope scope) {
log.debug("roomJoin - client id: {} scope: {}", client.getId(), scope);
IConnection conn = Red5.getConnectionLocal();
String scopeName = scope.getName();
log.debug("Scope name: {}", scopeName);
//check for "application" scope
if ("myapp".equals(scopeName)) {
log.debug("Connection already connected to app scope");
} else if (conn.hasAttribute("in.room")) {
//client is already in a room
log.debug("Connection already connected to room scope");
} else {
//the room name
String roomName = scopeName;
//set flag
conn.setAttribute("in.room", true);
//get app scope
IScope appScope = scope.getParent();
//handle at room level
if ("room".equals(roomName)) {
//lookup room (top level)
IScope roomScope = ScopeUtils.resolveScope(appScope, roomName);
if (roomScope == null) {
if (appScope.createChildScope(roomName)) {
log.debug("Room {} created", roomName);
roomScope = appScope.getScope(roomName);
} else {
log.warn("Room {} was not created", roomName);
}
} else {
log.debug("Room scope {} was found", roomName);
}
//get the next room identifier
String chatId = getNextChatId();
//room for chat id
IScope chatScope = ScopeUtils.resolveScope(roomScope, chatId);
if (chatScope == null) {
if (roomScope.createChildScope(chatId)) {
log.debug("Chat scope {} created", chatId);
chatScope = roomScope.getScope(chatId);
} else {
log.warn("Chat scope {} was not created", chatId);
}
} else {
log.debug("Chat scope {} was found", chatId);
}
//send the actual join
return roomJoin(client, chatScope);
} else {
return false;
}
}
return super.roomJoin(client, scope);
}
After this block is executed, your client would be connected to something like this – rtmp://localhost/myapp/room/1001 without having to create any additional NetConnections. The method “getNextChatId()” is meant to provide a chat room id, based on whatever criteria you would like.
Tags: flash, fms, NetConnection, Red5, room, rtmp, scope
Welcome fellow Red5, Flash, and Flex people! I want to let you all know that I will be conducting a workshop on Red5 with Dominick at the Flash on Tap conference in Boston during the second week of October 2008. For those of you that prefer face-to-face of one-on-one time with our core developers, this would be your opportunity – don’t miss out!
http://www.flashontap.com/fot/index.html
Plus I’m pretty sure this is the “first” flash conference + beer festival. It’s ok if you dont drink, just come for all the flash-ing heh heh
Tags: beer, conference, flash, flex, Red5, workshop