Reactor Chat Tutorial, Part 1

Sending a Chat Message

Now that we've joined the room, we can send a message to all of its occupants using the Room class's sendMessage() method, like this:

chatRoom.sendMessage("CHAT_MESSAGE",
                     true,
                     null,
                     "Hello world!");

The arguments in the preceding method-call are:

  • "CHAT_MESSAGE": The message name
  • true: Echo the message to the sender
  • null: Don't filter the message (send it to all occupants)
  • "Hello world!": The message's first, and only, argument.

Of course, we don't want to send "Hello world!" every time. Let's add a text field for the user to write a message. Pressing the Enter key will send the message.

package {
  import flash.display.Sprite;

  // Import text and keyboard classes
  import flash.events.KeyboardEvent;
  import flash.text.TextField;
  import flash.text.TextFieldType;
  import flash.ui.Keyboard;

  import net.user1.reactor.Reactor;
  import net.user1.reactor.ReactorEvent;
  import net.user1.reactor.Room;

  public class UnionChatPart1 {
    protected var reactor:Reactor;
    protected var chatRoom:Room;
    // Define a variable for the text field
    protected var outgoingMessages:TextField;

    public function UnionChatPart1 () {
      // Call a method to create the user interface
      buildUI();
      reactor = new Reactor();
      reactor.addEventListener(ReactorEvent.READY, readyListener);
      reactor.connect("tryunion.com", 80);
    }

    protected function readyListener (e:ReactorEvent):void {
      chatRoom = reactor.getRoomManager().createRoom("chatRoom");
      chatRoom.join();
    }

    // Define a method to create the user interface
    protected function buildUI ():void {
      outgoingMessages = new TextField;
      outgoingMessages.type = TextFieldType.INPUT;
      outgoingMessages.border = true;
      outgoingMessages.background = true;
      outgoingMessages.width = 400;
      outgoingMessages.height = 20;
      outgoingMessages.y = 210;
      outgoingMessages.addEventListener(KeyboardEvent.KEY_UP, keyUpListener);
      addChild(outgoingMessages);
    }

    // Define a listener to handles key presses
    protected function keyUpListener (e:KeyboardEvent):void {
      if (e.keyCode == Keyboard.ENTER) {
        chatRoom.sendMessage("CHAT_MESSAGE",
                             true,
                             null,
                             outgoingMessages.text);
        outgoingMessages.text = "";
      }
    }
  }
}

Pages: 1 2 3 4 5 6 7