如何使用PHP,MySQL DB和JavaScript模拟点对点通信通道?

时间:2011-08-29 22:24:39

标签: php javascript mysql ajax

我面临的挑战是通过仅使用标题中提到的技术来模拟网站的两个用户(例如游戏网站)之间的通信渠道。

最近我开发了一个在线国际象棋网站,其背后的想法是让用户有机会玩“现场”比赛,而不仅仅是漫长的游戏,你会采取行动,然后回到1-15几天来看你的对手是否有回应。此游戏引擎的工作方式意味着向服务器发送异步请求,既可以更新与游戏相关的信息(如果您进行移动),也可以验证是否有任何更改(如果您正在等待对手移动)。

为了更好地解释这一点......轮到它的玩家(当然是浏览器)会发送异步。请求更新游戏信息,确切地说是他移动的时候。同时,对手发送PERIODIC请求,“询问”是否有任何变化。如果有任何改变,角色会在电路板更新后切换。

定时器是引擎功能的后盾,所以我的问题是:你如何在两个玩家之间模拟一个com通道,同时尽量不对服务器施加太大的压力,同时还要让游戏更新尽可能快,以保持“活”的感觉。这在1分钟的比赛中是最重要的(可用类别之一)。因为在这种情况下,请求非常频繁地发生(至少1秒)。但服务器响应可能会延迟,当同时有数百个游戏可用时,服务器上会有很多压力......所以你看到了我的问题。

如果你有任何好主意,我期待听到你们的回答和挑选你的大脑:)

干杯! 安德烈

PS:如果您想尝试,请输入e-chess960.com

2 个答案:

答案 0 :(得分:3)

您希望构建套接字服务器。 node.js将是一个很好的基于javascript的库,用于套接字服务器。每个客户端都会创建一个到套接字服务器的套接字连接,然后当客户端向套接字服务器发送消息时,套接字服务器可以立即将消息发送回其订阅者,而不必将其存储在任何地方。

套接字服务器需要套接字访问,这通常需要vps而不是共享服务器。

要使解决方案正常工作,您需要客户端能够创建到服务器的套接字连接。一些浏览器已经可以作为html5的一部分,但还不是全部。您也可以使用Flash作为创建套接字连接的方法。

答案 1 :(得分:-2)

您真正想要的不是每秒都拉服务器,而是保持连接打开并使用observer-pattern将更新分发给特定客户端(换句话说:推送而不是拉动)。这样,您的服务器资源就不会被每个第二个客户端的新连接所淹没。实现这一目标的库是Comet Library。查看这个不错的tutorial以获取示例应用程序。