背后的想法是与 PHP 服务器交互的多人浏览器游戏。
现在它的工作原理是这样的: 浏览器每秒都会对 php 脚本进行 ajax 调用,该脚本会检查所有内容并返回响应。 总而言之,它运行良好,但问题是浏览器在一段时间后会过载(因为数千个ajax请求),并且无法再玩了。而且 1 秒以上的延迟也相当多了。
我的想法是拥有一个简单的 Flash 像素,它将与服务器进行 2 路通信。 例如:
- 用户的行为和操作
- Javascript 函数使用一些参数调用 Flash 像素
- Flash向服务器发送请求
- 服务器向所有其他 Flash 监听器(在线用户)“宣布”此操作
- 收到服务器的响应
- 用户界面已更新
类似的事情。
发送和接收的数据可以只是字符串(json)或任何其他数据。
我了解了不同的 RTMP 服务器以及 smartfoxserver.com 。购买其中任何一个都不是问题,但在我看来,它们提供的功能太多了,无法满足我的需求(音频视频流等)。而且它们不是基于 PHP 的。因此,使用 RTMP 服务器需要在需要时启动 PHP 脚本。在用户可以无延迟地玩游戏之前,这也不是问题。
如果解决方案是安装 RTMP 服务器,PHP 中有一个“RTMP client ”,但不幸的是没有太多关于它的信息/文档。
无论如何,如果找不到解决方案,我将使用相同的 Flash“像素”,它将通过 PHP AMF 发送请求并接收响应。它会有轻微的延迟,并且不会持续存在,但它应该可以解决部分问题。
也许你们中的一些人已经遇到了这个问题,并找到了解决方案,或者欢迎任何其他关于如何实现这一问题的想法。
谢谢
P.S.Google Wave 在交互式聊天中使用了类似的功能,当某些用户正在打字时,其他用户可以实时看到这一点。
最佳答案
您可以使用XMLSocket在AS3中建立socket connection with the PHP server .
关于PHP <---> FLASH长连接(数据流),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9651559/