msgbartop
Various ramblings-on, mostly about Red5
msgbarbottom

08 May 09 Flash on Tap: Red5 Workshop

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: , , , , ,

Buzz it!

07 Apr 09 On-demand room / scope creation

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: , , , , , ,

Buzz it!

21 Aug 08 Flash on Tap

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: , , , , ,

Buzz it!
10,964 spam comments
blocked by
Akismet