当前位置:嗨网首页>书籍在线阅读

12-ElectroServer程序的基础架构

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

11.2.3 ElectroServer程序的基础架构

ElectroServer扮演的角色与在上一小节描述的套接字服务器程序的角色非常相似。它根据不同的协议监听不同的端口,当消息到达,它会将消息进行路由回传给连接的其他客户端。

然而,ElectroServer有些特殊功能值得介绍。其他的套接字服务器平台也有其中一些功能,有些则是它独有的功能。不过,本节讨论的大多数内容也同样适用于其他的套接字服务器,只要它们也有JavaScript的API。

1.客户端

ElectroServer应用程序的客户端是一个用API所支持的语言平台写成的程序,这些语言包括Flash ActionScript2、Flash ActionScript3、Java、Objective-C、C#/.Net,现在也包含JavaScript。客户端是一个应用程序,用户将在这个程序上进行操作,通过API将消息发送到ElectroServer。一般情况下,客户端可能是游戏、聊天室、虚拟世界或者其他种类的多人社区或通信程序。

所有ElectroServer上的通信都是“基于事件的”。客户端应用程序使用JavaScript的API发送事件,并且客户端定义不同的事件处理函数用于监听从ElectroServer发回的消息。所有这些消息和事件都是通过API通信的,也可以说都是使用BinaryHTTP协议通过8989端口通信的(至少本例如此)。

2.区域、房间和游戏

当一个用户第一次连接ElectroServer时,需要加入或创建一个“区域(Zone)”。区域表示一个房间(room)的集合。如果用户试图创建一个已经存在的区域,他将会加入到这个区域中,而不是创建一个新的。

进入一个区域之后,用户需要加入区域中的一个房间。如果用户试图创建一个已经存在的房间,他将会被加入这个房间。

提示

除了区域和房间,ElectroServer还提供了一个GameManager的API。它允许进一步将用户划分到具体的游戏实例中。本章的示例不会用到这个API。

3.扩展程序

扩展程序是服务器端的代码模块,它可以在数据被发回给其他客户端之前处理客户端发来的数据。扩展程序也可以创建并成立自有事件。对于许多游戏来说,扩展程序中包含了绝大部分的游戏逻辑,客户端程序只负责显示和收集用户的输入信息。

扩展程序中至少包含一个插件。插件是用ActionScript1(基本上是JavaScript)或Java编写的代码模块,可以在房间的范围内被实例化。例如,如果制作一个纸牌游戏,可能需要在服务器上有一个纸牌游戏插件,它可以处理洗牌发牌之类的事情,还要确保正确的玩家获胜。用这种方式,服务器将保存游戏的真正状态。使用扩展程序可以帮助维护游戏的流程,并且防止玩家作弊。由于本章示例比较简单,所以不会使用任何的服务器端的扩展程序。但是,如果读者希望深入学习ElectroServer或其他套接字服务器程序,应该尽可能多的学习相关知识。