我正在开发一款多人棋盘游戏。哪个用户进入一个空房间,并等待其他人加入,这样他们就可以开始玩了。 我面临的问题是,当第一场比赛加入空荡荡的房间时。房间是空的,他的名字显示为迈克尔。当第二个玩家(Peter)从另一个浏览器加入房间时,Michael将被列为Player1而他将被列为player2。但我怎么能让迈克尔的浏览器显示出来(彼得已经加入了房间)。我想使用jquery setInterval,但我没有发现这有效,因为它一直在调用服务器。有什么建议? 例如:迈克尔去www.board.com/game=1等待有人加入 Peter去了www.board.com/game=1,他加入了。在Peters浏览器中,他可以在房间里看到Micael。但在MICHAELS浏览器中他看不到。如果有人加入房间,我如何通知迈克尔?是jQuery setinterval只有解决方案吗?不是没有效率吗?
答案 0 :(得分:2)
你可以从浏览器中打开一个Web套接字......
但除此之外,你必须定期轮询服务器以获取更新的数据..我将设置一个php文件来提供一个json blob,你的界面发生变化(仅限游戏/聊天数据),然后使用jquery,设置一个ajax每隔10-20秒调用那个php文件。如果您只是轮询数据,它不会占用太多资源..
答案 1 :(得分:0)
HTTP的本质是您无法调用用户的浏览器,而您无法从服务器重新加载(或加载信息)。只有浏览器可以随时从服务器访问内容。这就是为什么唯一的选择(如果你不想重新加载页面)是使用jQuery并使用短间隔调用服务器。
答案 2 :(得分:0)
如果结果与您的需求不匹配,您可以执行ajax请求并在回调中再次发出相同的请求,并可能使用window.setTimeout(“method()”,1000)延迟它;
答案 3 :(得分:0)
HTTP不是针对这种情况制作的,但我有好消息,互联网已经发展,你可以用不同的方式实现实时应用。 首先,更新,更好但兼容性较差的HTML5 WebSockets。 或者Ajax定期请求更新您的页面或使用“Comet编程”等技术发送请求并让它们保持打开状态,直到服务器响应为止。