Решил все-таки опробовать данную технологию на примере чата. Нашел в сети один урок. Сделал все по образцу - коннект есть, а обмена данными нет. При этом пример работает. Знаю, что звучит тупо, но отличий не наблюдаю.
Вот мой код.
Код AS3:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.NetStatusEvent;
import flash.events.StatusEvent;
import flash.net.GroupSpecifier;
import flash.net.NetConnection;
import flash.net.NetGroup;
import flash.net.NetStream;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.ui.Keyboard;
public class Main extends Sprite
{
private const SERVER:String = "rtmfp://p2p.rtmfp.net/";
private const DEVKEY:String = "xxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxx";
private const GROUP:String = "test";
private var _netConnection:NetConnection;
private var _netStream:NetStream;
private var _netGroup:NetGroup;
private var _sequence:int;
private var _txt:TextField;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
_txt = new TextField();
_txt.autoSize = TextFieldAutoSize.LEFT;
_txt.border = true;
addChild(_txt);
_sequence = 0;
_netConnection = new NetConnection();
_netConnection.addEventListener(NetStatusEvent.NET_STATUS, onNetConnectionEvent);
_netConnection.connect(SERVER + DEVKEY);
}
private function onNetConnectionEvent(e:NetStatusEvent):void
{
trace("connect" + Math.random(), e.info.code);
switch(e.info.code) {
case "NetConnection.Connect.Success":{
onNetConnectionConnect();
break;
}
case "NetStream.Connect.Success":{
onNetStreamConnect();
break;
}
case "NetGroup.Connect.Success":{
onNetGroupConnect();
break;
}
case "NetGroup.Posting.Notify":{
trace("get message");
onGetMessage(String(e.info.message));
break;
}
}
}
private function onNetConnectionConnect():void
{
var gs:GroupSpecifier = new GroupSpecifier(GROUP);
gs.multicastEnabled = true;
gs.postingEnabled = true;
gs.serverChannelEnabled = true;
_netStream = new NetStream(_netConnection, gs.groupspecWithAuthorizations());
_netStream.addEventListener(StatusEvent.STATUS, onNetConnectionEvent);
_netGroup = new NetGroup(_netConnection, gs.groupspecWithAuthorizations());
_netGroup.addEventListener(StatusEvent.STATUS, onNetConnectionEvent);
}
private function onNetStreamConnect():void {
_netStream.client = this;
}
private function onNetGroupConnect():void {
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyEvent);
}
private function onKeyEvent(e:KeyboardEvent):void
{
if (e.keyCode == Keyboard.ENTER) {
var mes:Object = { };
var message:String = Math.random().toString();
mes.text = message;
mes.sequnce = _sequence++;
mes.sender = _netConnection.nearID;
_netGroup.post(mes);
_txt.appendText("send message: " + message + "\n");
}
}
private function onGetMessage(message:String):void {
_txt.appendText("get message: " + message + "\n");
}
}
}
В чем ошибка?