我使用FMS(rtmfp)连接到Netgroup。我可以连接到Netgroup(reiceve NetStatusEvent“NetGroup.Connect.Success”),但这就是全部。我无法发布任何内容或看到有人加入了Netgroup,没有NetStatusEvent触发。我错过了什么吗?
以下是代码:
public function connect(url:String):void {
_nc = new NetConnection();
_nc.client = this;
_nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
_nc.connect(url);
}
private function netStatusHandler(event:NetStatusEvent):void {
switch (event.info.code){
case "NetConnection.Connect.Success":
createGroup();
break;
case "NetGroup.Connect.Success":
//post msg to the group
var message:Object = new Object;
message.text = "Hello";
message.sender = _nc.nearID;
_netGroup.post(message);
break;
default:
trace("event.info.code: " + event.info.code);
break;
}
}
private function createGroup():void {
_groupSpecifier = new GroupSpecifier("test_group");
_groupSpecifier.postingEnabled = true;
_groupSpecifier.multicastEnabled = true;
_groupSpecifier.serverChannelEnabled = true;
_netGroup = new NetGroup(_nc, _groupSpecifier.groupspecWithAuthorizations());
_netGroup.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
}
答案 0 :(得分:1)
您需要在交换机块中检查“NetGroup.Posting.Notify”,并使用NetGroup类的post方法!
private function netStatusHandler(event:NetStatusEvent):void {
switch (event.info.code){
case "NetConnection.Connect.Success":
createGroup();
break;
case "NetGroup.Connect.Success":
break;
case "NetGroup.Posting.Notify" :
receiveMessage(event.info.message);
break;
default:
trace("event.info.code: " + event.info.code);
break;
}
}
然后在receiveMessage函数中:
private function receiveMessage(message:Object):void
{
trace(message.text)
}
最后发送功能:
private function sendMessage(txt:String):void
{
var message:Object = new Object();
message.text = txt;
netGroup.post(message);
}
现在您可以在按下发送按钮时调用sendMessage(“text”)。
答案 1 :(得分:1)
您选择发布邮件的位置可能会出现问题。发布来自Connect.sucess,因此邻居未连接到对等方。只有在邻居连接后,该消息才会发布到其他对等体。
答案 2 :(得分:0)
为了完成你要求的任务,你应该在听到“NetGroup.Neighbor.Connect”时触发帖子()。如果在连接到组时立即触发post(),则在连接到邻居之前可能会触发它。将您连接到组和组邻居不会同时发生。 P2P连接依赖于邻居可用的确认,以便消息可以在整个组中传播。
要接收post()消息,您需要侦听“NetGroup.Posting.Notify”。您创建的消息是一个简单称为消息的对象,其中附有两条信息。此时,您可以使用消息并将其打印到文本字段。
我根据你写的内容发布了一些示例代码(不会开箱即用)。您可以看到我们正在等待,直到我们可以在发布post()之前确认与组内邻居的连接。
private function netStatusHandler(event:NetStatusEvent):void {
switch (event.info.code){
case "NetConnection.Connect.Success":
createGroup();
break;
case "NetGroup.Connect.Success":
connected = true;
break;
case "NetGroup.Neighbor.Connect":
//post msg to the group
var message:Object = new Object;
message.text = "Hello";
message.sender = _nc.nearID;
_netGroup.post(message);
case "NetGroup.Posting.Notify":
writeText(message.sender + ": " message.text);
default:
trace("event.info.code: " + event.info.code);
break;
}
}
这些课程可以为你做很多事情,所以继续坚持下去。您不仅限于短信,还可以传递任何对象。可以处理流数据,但是有特定的类。
我引用的链接,将进一步帮助您: