2010-01-07 71 views
2

我和一个朋友正在与Google桌面浏览器和Android客户端进行聊天,并以Google App Engine作为服务器进行回合制游戏。Google App Engine,Java和HTTP性能

我们使用Java API for GAE并使用HTTP与服务器进行通信。我们已经实现了简单的聊天功能,并且我们在浏览器和Android客户端上收到了不期望的延迟1-3秒,同时发布了简单的单词聊天消息。

我的朋友认为最好使用XMPP代替HTTP,但我们希望使用Google帐户cookie进行Android客户端的身份验证,并且根据GAE文档,XMPP客户端无法使用Google帐户Cookie,必须使用用户的密码。

有没有人有任何关于延迟可能来自何处,如何排除故障和/或如何处理它的建议?

此外,是否有人知道在Java中完成GAE的聊天(或类似的)的任何开源实现?似乎无法找到任何。

+0

你是如何处理与客户通信的服务器的?我的意思是。当A向B写信息时,客户B如何知道有消息?轮询?如果是这种情况,延迟会很高,所以我建议研究一下“彗星”。一种实现“服务器推送”的方式:服务器将客户端写入所需的准确时间。实现它的方式是通过HTTP。客户端连接到服务器并等待响应,但服务器必须准备好。同时连接1.000个客户端(并等待远距离响应)对于正常的HTTP请求是不可接受的。这是一项工作4comet。 – helios 2010-01-07 15:46:31

+0

helios,关于如何在应用引擎上做彗星的任何提示?我觉得这是不可能的。 – 2010-01-07 22:54:34

+0

我希望找到一种方法来做到这一点。看来,目前没有办法与Comet做到这一点。如果您有任何运气,请发帖 – Hortinstein 2010-03-03 17:13:55

回答

0

分析情况的一种方法是使用Wireshark来查看延迟期间的网络流量。

0

你不说你的聊天消息是如何从一个JVM获得的。如果你正在使用数据存储,也许尝试使用memcache?

此外,启动时间往往是一个问题;应用引擎始终启动和停止JVM,特别是对于低流量的应用。诊断这种情况的一种方法是重新加载页面(发送更多消息)并查看一段时间后它是否会变得更快。在管理控制台日志中分辨差异应该很容易。