`
base21cn
  • 浏览: 988 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论
阅读更多
用RED5作为服务器端,Flash作为客户端开发实时在线游戏已经有一段时间了。
下面我把一些在开发中的问题及解决说明一下,希望可以给大家带来帮助。
先大致说一下我们开发的逻辑,我们自己定义了一套MESSAGE,MESSAGE分为3类,
1、EVENT,处理事件。EVENT相当于一个注册表,比如说,所有用户列表更新的事件,用户进入时首先会向服务器注册一个事件用于获取所有用户的列表,当有新用户进入时,服务端会搜索注册了这一事件的用户,并向所有用户INVOKE相对应的方法,相当于广播。
2、REQUEST,处理用户请求。用户请求可能会有Response,可能会有Brocast,根据Request的类型来分别进行逻辑处理。
3、RESPONSE,请求处理完成之后的响应。有Response必然有Request,当用户发起了Request,服务端会统一的INVOKE客户端的一个方法,由该方法转发服务器处理之后的数据。
下面说一下一些问题
1、关于Scope
room就是一个Scope,链接Room,可以通过客户端发起的Connection的URL进行链接,这种情况下,服务端会判断是否已经存在这个Room,如果存在,则让用户直接链接,如果不存在,则服务器端会先创建这个Room,再让用户连接。
我们为了实现大厅和房间,在appStart时手动的去创建了这些Room,一开始用了scope.addChildScope()方法,结果在用户进入房间时一直报NullPointException。查了一下API,发现,addChild只能工作在子域中,修改为createChildScope(),问题解决。
用户连接到app直后,通过conn.connect(Scope scope)方法进入房间,但是此时发现了一个百思不得其解的问题,虽然没有给程序造成影响,但看着总是不爽 。当用户连接到Room之后,会进行appDisconect的操作,当用户断开客户端时,却只执行了roomDisconect方法,当用户断开链接时,我需要在appDisconect中作一些关于用户的操作。这个问题一直没解决,如果有同学知道是为啥,请解答,在这先谢过
2、从Flash客户端带参数回传
做过很多的测试,用JSON的形式最好,JSON回传的字符串,在服务端可以通过ObjectMap这个类去解开,很方便。
3、全局变量
一定要谨慎的使用全局变量,最好是通过Room来存储一些全局的数据,比如游戏的进度信息,用户信息。
4、Ghost
经常会出现一些客户端即使断开了还存在的情况,可以用killGhostConnections()这个方法。
5、ShareObject的利弊
当最后一个用户离开时,自己创建的ShareObject会被销毁,当客户端再链接时,会由客户端去创建这个SharedObject,服务端就无法监控这个SO的状态了,所以推荐用Call及Invoke的方式进行交互。
大概就这些,希望对大家有帮助
分享到:
评论

相关推荐

    Linux操作系统下双启动环境的陷阱问题

    “Red Hat Linux 8.0和Turbolinux 8 Workstation等个人电脑发行套件都有一个使用GUI的简单易懂的安装器,因此没有关系”,“事先都将电脑上不支持Linux的板卡卸载掉了,所 以不会有事的”,“运行Windows XP的机器...

    Linux操作系统总结与心得.doc

    在安装Linux操作系统方面,有三种常见的方法:一是通过光盘安装,用户可以在软件店购买Linux发行版的光盘,如Red Hat、TurboLinux或Corel,然后直接安装;二是网络安装,用户可以从发行商的官方网站或其他下载站点...

    spring-boot项目实践总结

    :red_heart_selector: :red_heart_selector: :red_heart_selector:如果觉得我的文章或代码对您有帮助,可以请我喝杯咖啡哦 :red_heart_selector: :red_heart_selector: :red_heart_selector: :grinning_face_with_...

    Linux系统中如何编写C/C++程序

    在这种情况下,参照相关教程配置网络或解决Red Hat Subscription Manager的问题。 接下来是编写C/C++程序。对于初学者,可以使用CentOS 7自带的文本编辑器,如`gedit`或`nano`,它们的操作方式更接近于Windows下的...

    单片机亮灯单片机亮灯.docx

    - 使用的单片机型号为AT89C51; - 晶振频率为12MHz; - 通过定时/计数器实现延时控制; - 三灯P0.0、P0.1、P0.2需按2秒交替闪烁。 #### 二、系统设计分析 为了完成这一任务,需要准备以下基本元件: - **单片机**...

    Python-大作业之五子棋游戏(附代码).docx

    Label(self.root, text="***WuZiQiGame***", fg="red").place(x=20, y=0) Button(self.root, text="start", command=self.start).place(x=30, y=230) Button(self.root, text="quit", command=self.root.destroy)....

    2020新人教版高一英语必修一单词表.doc

    ### 2020新人教版高一英语必修一单词表知识点解析 #### Welcome Unit ...这些词汇不仅涵盖了日常生活中的常用表达,还涉及到了学术、社交和个人发展等多个领域,对于提升学生的语言能力和实际应用能力具有重要意义。

Global site tag (gtag.js) - Google Analytics