Java 应用程序引擎聊天应用程序

Java 应用程序引擎聊天应用程序,java,google-app-engine,xmpp,Java,Google App Engine,Xmpp,我正在使用xmpp在AppEngine上编写一个聊天应用程序。我的想法是允许用户彼此聊天。我可以获取发送到google talk帐户的消息,方法是将登录用户的@gmail.com部分删除并替换为@appid.appspotchat.com),例如,如果登录用户是bob@gmail.com,用于从发送的jid将是bob@appid.appspotchat.com). 然后,您可以向google talk帐户发送消息,例如:。jeff@gmail.com. 我的问题是再次收到信息。开发者页面显示了应

我正在使用xmpp在AppEngine上编写一个聊天应用程序。我的想法是允许用户彼此聊天。我可以获取发送到google talk帐户的消息,方法是将登录用户的@gmail.com部分删除并替换为@appid.appspotchat.com),例如,如果登录用户是bob@gmail.com,用于从发送的jid将是bob@appid.appspotchat.com). 然后,您可以向google talk帐户发送消息,例如:。jeff@gmail.com.

我的问题是再次收到信息。开发者页面显示了应用程序本身如何向用户接收消息appid@appspot.comjid,但是如何让它接收到appid.appspot.com jid的消息,然后向登录用户显示这些消息?总体思路是,当用户登录时,我将检索三个联系人列表,获取他们的联系人(将gmail.com替换为appid.appspotchat.com),然后将可用联系人呈现给用户



如果这是不可能的,有没有办法让登录的用户以不同的方式与其他用户聊天?我简单地看了一下channel api,但我认为这不合适?

您不能使用
anything@your_app_id.appspot.com
。相反,您必须使用
anything@your_app_id.appspotchat.com
如中所述。

您不能使用
anything@your_app_id.appspot.com
。相反,您必须使用
anything@your_app_id.appspotchat.com
如中所述。

当服务器收到针对该用户的消息时,您可以使用通道API向下发送消息到客户端。没有将XMPP消息直接发送给您自己页面上的用户的工具;XMPP API用于向登录到XMPP客户端(如Gmail、Pidgin等)的用户发送消息。

当服务器收到针对该用户的消息时,您可以使用通道API向下发送消息。没有将XMPP消息直接发送给您自己页面上的用户的工具;XMPP API用于向登录到XMPP客户端(如Gmail、Pidgin等)的用户发送消息。

是的,很抱歉在我键入它时这么说(现已更正)。你知道一个用户如何接收发送给特定用户的消息吗anything@appid.appspotchat.comjid,好像这是他们自己的地址?这应该有用:谢谢,我看过这些页面了。如果地址是bob@appid.appspotchat.com如果发送到,所有这些请求是否都将转到同一个处理程序,如果是,bob如何获得这些消息?在我看来,处理程序在后台自动处理消息时更为有用,而不涉及用户(例如,对于聊天机器人)。我假设可以利用数据存储来实现这一点,但我试图避免这样做,因为如果您必须检查并写入通过应用程序发送的每封邮件,那么这将无助于配额。请求肯定会由多个前端实例提供,因此您需要一个永久存储,就像数据存储或memcache一样。是的,很抱歉在我输入它的时候就这么说了(现在更正了)。你知道一个用户如何接收发送给特定用户的消息吗anything@appid.appspotchat.comjid,好像这是他们自己的地址?这应该有用:谢谢,我看过这些页面了。如果地址是bob@appid.appspotchat.com如果发送到,所有这些请求是否都将转到同一个处理程序,如果是,bob如何获得这些消息?在我看来,处理程序在后台自动处理消息时更为有用,而不涉及用户(例如,对于聊天机器人)。我假设可以利用数据存储来实现这一点,但我试图避免这样做,因为如果您必须检查并写入通过应用程序发送的每封邮件,那么这将无助于配额。请求肯定会由多个前端实例提供,因此您需要一个永久存储,与数据存储或memcache类似,通道API基本上消除了轮询的需要。您当前的计划也会起作用,只要您不介意在刷新memcache时删除消息的可能性。当用户登录时,您需要在其客户端页面上创建一个通道。你可以使用他们的JID作为该频道的客户ID。然后,当您的应用程序接收到该用户的消息时,只需使用channel.send_message()将消息发送到与该消息所针对的JID相对应的clientid。以下是文档:使用您选择的clientid在服务器端创建通道令牌,并将其传递给客户端(通常在呈现页面时)。然后从服务器向clientid标识的客户机发送消息。感谢您的帮助,我找到了这个示例应用程序(它本身就是聊天),因此我们将了解它们所做的工作。基本上,通道API消除了轮询的需要。您当前的计划也会起作用,只要您不介意在刷新memcache时删除消息的可能性。当用户登录时,您需要在其客户端页面上创建一个通道。你可以使用他们的JID作为该频道的客户ID。然后,当您的应用程序接收到该用户的消息时,只需使用channel.send_message()将消息发送到与该消息所针对的JID相对应的clientid。以下是文档:使用您选择的clientid在服务器端创建通道令牌,并将其传递给客户端(通常在呈现页面时)。然后您从服务器向clientid标识的客户端发送消息。感谢您的帮助,我找到了这个示例应用程序(它本身就是聊天),因此将了解它们所做的工作