Hyb*_*ynx 11 javascript php ajax online-game
我尽量做到这一点.
到目前为止我所做的:我用的游戏将使用setTimeout或运行JavaScript setInterval.这不是闪光或任何特别的东西.到目前为止,我所做的就像测试运行(所以你可以更好地理解),几乎是循环Ajax,以便尽可能快地向PHP页面发送请求,然后PHP $_GET从请求中读取url,然后PHP编辑一个名为p1.html的文件$_GET,它只是玩家1的x和y轴坐标.所以在播放器2的浏览器中,它几乎完成了我上面所说的,现在当它接收到Ajax请求时,它将接收播放器1的坐标.因此JavaScript完成了它的工作,并将播放器1移动到播放器2的浏览器上.这就是我自己做的,我测试了它,是的,它是有效的,是的,当我修复所有的bug和东西时,它会永远持续下去.
说这就是我到目前为止所做的,但如果我想要一个在线格斗游戏或实时侧滚动游戏,这还不够快.这就是我需要帮助的地方.我在w3schools.com上了解了很多东西,但我不知道如何完成这项工作.那可能就是这样.我只需要浏览器1,将数据传输到浏览器2,类似于"1,100,200"或实际上更长一些,并让浏览器2将该数据作为JavaScript中的变量读取(类似x="received data";),就是这样.JavaScript将完成剩下的工作.
我确信我可以自己编写我需要的所有东西,但是为了将数据从A点发送到B点,每秒50次,我只是对此一无所知.甚至没有名字.最后,网址和示例将非常好(更清楚).特别是如果它已经在w3schools.com上(带有示例),我就错过了它.
Nul*_*teя 16
你可以使用websocket
WebSockets(通过AJAX)的优势基本上是HTTP开销较少.一旦建立连接,所有未来的消息传递都是通过套接字而不是新的HTTP请求/响应调用.因此,您假设WebSockets每单位时间可以发送和接收更多消息.事实证明这是真的.但是,一旦你在混合中增加延迟,就会有一个非常痛苦的现实.
WebSockets比AJAX快大约10-20%
当我们用php使用ajax时会发生什么
但websocket的作用是消除2个连接进程,并只向服务器发送消息.服务器已经连接到sql server
另一个好处是客户端和服务器之间的连接保持打开状态,服务器可以向客户端发送消息.在ajax你需要每次cal
Den*_*ret 14
答案很简单:使用websockets.它们允许在两个方向上立即推送数据,以实现看似瞬时的交互.它们消除了从客户端提取缓慢而繁重的数据的需要(包括服务器).请注意,这是我最喜欢的游戏中用于通知推送的解决方案.
您可能对PHP上的websockets上的这个介绍感兴趣.但请注意,PHP实际上并不是长连接处理和实时游戏的最有效解决方案(您可能更喜欢Go,node.js,java等).
我同意其他海报:websockets是你应该使用的技术.唯一的缺点是Internet版本10之前的Internet Explorer不支持Websockets,目前仅适用于Windows 8,并且在Windows 7之前的任何Windows版本都不可用.当您想在Vista和XP上支持IE用户时,你需要使用AJAX或Flash备用.
但是你可能会遇到另一个问题:
用于将数据从A点发送到B点,每秒50次
当您需要经常发送数据时,您的协议似乎有些问题.你是否计划以20ms的固定间隔更新球员位置,即使他们没有改变(球员站立)或以恒定速率改变(球员朝一个方向行走)?我建议你不要转移位置但只改变移动方向(开始向左移动,停止向左移动X:Y等)你可以安全地获得大量带宽.
如果架构正确,长轮询 ajax请求对非实时通信工作正常.话虽如此,长期民意调查更像是"黑客"; 如果你正在寻找的东西建在考虑你的选择应该是所需的连接WebSockets的肯定:
WebSockets是一种先进的技术,可以在用户的浏览器和服务器之间打开交互式通信会话.使用此API,您可以将消息发送到服务器并接收事件驱动的响应,而无需轮询服务器以进行回复.
查看browserquest获取灵感 - Mozilla的优秀人物在github上提供了完整的源代码!