最近在用AMS做一个多房间的聊天室。计划先做网页端,然后用air端。无论哪个平台,都有在线功能管理。比如房间踢人,权限管理,房间设置等等。

AMS对应的服务端代码还停留在as2时代。那么,用as3的代码去和as2的代码交流,会出现啥问题呢。比如as3(client)这边call server端,传了一个类对象过去。服务端接到后,原因返回的却是一个Object对象,没办法将类返回过来。

这样使得两者交互不怎么和谐。这个不是这篇文字要记录的东西,先不管这个了。进入正题。

    nc.connect("rtmp://localhost/chatroom/311");
    nc.connect("rtmp://localhost/chatroom/5100");

这里实现的是一份服务器代码,对应许多个房间。其实,这里仅仅是在后边多添加了一个数字(可以说是房间号码)。平常,我们会去这样做。

    nc.connect("rtmp://localhost/chatroom");

虽然我们没有多加数字,服务器那边会默认有一个字符分配出来。在控制台中,你可以看的到”_definst_”。而聊天室这里要做的就是一份服务器代码对应很多个客户端。每个客户端行为各不一样,各不影响。

到了这里,可以想到游戏里边的小喇叭。有全频道喇叭和当前频道喇叭。当前频道就相当于这里所说的一个房间。那么全频道喇叭又该如何呢。这里,会有另外一个server代码与之对应,它可以统筹所有的子频道。然后广播出去。