GAE上的客户沟通

时间:2012-01-04 06:50:32

标签: java google-app-engine gwt channel-api

Android应用(本机应用)与Android之间进行通信的最佳方式是什么? GAE上的桌面应用程序(C#/ Java客户端)? 我找到的一种方法是Channel API。不幸的是,除了Javascript支持Channel API之外,我发现没有客户端脚本。 另一种方法是创建一个静态类并通过这些静态变量进行通信。

这是我想要实现的目标:

  1. 我希望Android应用向GAE发送消息。
  2. 此消息应由我的PC App(C#/ Java客户端)
  3. 检索
  4. PC App应该返回对此消息的回复
  5. PC响应应该发送到移动应用程序。
  6. 实际上我正试图从我的手机上的Windows命令提示符下执行命令。

2 个答案:

答案 0 :(得分:1)

怎么样:

Android< - > App Engine:C2DM

这是关于它的好视频:

http://www.youtube.com/watch?v=M7SxNNC429U

C#/ Java< - > App Engine:Http Post / Get,在app引擎端创建一个http servlet。 和c#/ java上的标准http请求。

这是一个关于servlet方面的博客:

http://zawoad.blogspot.com/2010/04/how-to-call-servlet-in-gwt.html

答案 1 :(得分:0)

基本上这就是它的工作原理:

  • GAE处理程序通过http从移动设备接收消息,并将其存储到数据存储区。以下是移动设备通过http:

    完成的请求示例
    POST http://myapp.appspot.com/messages
    Content-type: application/json
    
    {"message":"Message from mobile device","userid":"myuserid",[other data..]}
    
  • 桌面应用程序通过http向GAE发出重复请求(每10秒左右)。如果没有新消息,GAE处理程序将给出空响应,但如果消息已到达,则消息从数据存储区加载并通过http提供,因此应用程序将接收消息。这是请求示例:

    GET http://myapp.appspot.com/messages?last_message_id=...
    

    数据库查询示例:

    SELECT * FROM messages WHERE message_id > LAST_MESSAGE_ID
    

    回应示例:

    Content-type: application/json
    
    [{'id':1, 'message':'Message 1 from mobile device','userid':1},
     {'id':2, 'message':'Message 2 from mobile device','userid':1}]
    

使用Channel-API,可以发出一个长请求(长轮询),而不是每10秒重复一次。它效率更高,但如果库不存在则更难实现。

我不推荐您使用特定的库,因为我不使用C#或Java编写代码,但您只需要一个可以发出http请求的库,以及一个以您选择的格式对数据进行编码和解码的库。我的例子中使用了JSON数据编码。