0

我正在开发一个多人棋盘游戏。哪个用户进入一个空房间,并等待其他人加入以便他们可以开始玩。我面临的问题是,当第一场比赛加入空房间时。房间是空的,他的名字显示为迈克尔。当第二个玩家(彼得)从另一个浏览器加入房间时,迈克尔将被列为玩家 1,他为玩家 2。但是我怎样才能使显示的迈克尔浏览器(彼得加入房间)。我正在考虑使用 jquery setInterval,但我不觉得这很有效,因为它一直在调用服务器。有什么建议么?示例:Michael 前往 www.board.com/game=1 并等待有人加入 Peter 前往 www.board.com/game=1 并加入。在 Peters 浏览器中,他可以看到房间里的 Micael。但在MICHAELS 浏览器中他看不到。如果有人加入了房间,我如何让 michael 通知?jQuery setinterval 只是解决方案吗?不是效率低吗?

4

4 回答 4

2

你可以从浏览器打开一个网络套接字...

http://www.websocket.org/

但否则,您将不得不定期轮询服务器以获取更新的数据。我将设置一个 php 文件来提供一个带有您的界面更改的 json blob(仅限游戏/聊天数据),然后使用 jquery,设置一个 ajax 调用php 文件每 10-20 秒关闭一次。如果您只是轮询数据,则不会占用太多资源..

于 2012-05-02T14:46:16.797 回答
0

HTTP 不是为这种情况而设计的,但我有个好消息,互联网已经发展,您可以通过不同的方式实现实时应用程序。首先,更新、更好但兼容性较差的 HTML5 WebSockets。或者使用 Ajax 定期请求更新您的页面或使用诸如“彗星编程”之类的技术发送请求并让它们保持打开状态,直到服务器有响应。

于 2012-05-02T14:51:19.570 回答
0

HTTP 的本质是您不能调用用户的浏览器,也不能使其从服务器重新加载(或加载信息)。只有浏览器可以随时访问服务器上的内容。这就是为什么唯一的选择(如果您不想重新加载页面)是使用 jQuery 并使用短时间间隔调用服务器。

于 2012-05-02T14:37:06.530 回答
0

如果结果不符合您的需求,您可以执行 ajax 请求并在回调之外再次发出相同的请求,并且可能使用 window.setTimeout("method()", 1000); 延迟它

于 2012-05-02T14:37:39.930 回答