繁体   English   中英

实现在单个持久连接内交换四个消息的协议

[英]Implementing a protocol exchanging four messages within a single persistent connection

我有一个完整的协议实现,其中通过使用Java套接字的持久连接,以以下方式在客户端(本地Android应用程序)和服务器(独立Java服务器)之间交换四个消息:

(客户端->服务器):message1

(服务器->客户端); message2

(客户端->服务器):message3

(服务器->客户端):message4

在发送每条消息之间,客户端和服务器都必须执行繁重的数学(加密)操作(基于椭圆曲线的基于配对的计算)。

这个项目可以在我的本地开发机器中使用套接字正常运行,并且可以在Android应用程序和Java服务器之间打开从message1到message4的套接字。 现在,我需要对Google AppEngine做同样的事情,但是由于它不允许打开套接字,所以我不知道该怎么做。 我已经检查了Channel和XMPP API,但不知道我的用例是否适用于该API。 使用AppEngine的Channel和XMPP API是正确的方法吗? 是否可以通过AppEngine上的套接字模拟在本地计算机中实现的功能?

感谢您的答复。

Google App Engine不支持持久连接。

您将需要重新设计协议以通过HTTP运行。

例如,可以通过HTTP请求发送message1,可以使用匹配的HTTP响应返回message2。 至此,套接字连接结束。

您必须发出第二个HTTP请求,以使用message3打开新套接字,并且可以使用第二个HTTP响应返回message4。

您可以使用HTTP会话“连接”第一个和第二个HTTP请求。 会话基本上是一个ID,其中在服务器端存储了额外的数据。 您将在第一个HTTP请求中创建会话,并将其作为参数传递给第二个HTTP请求。 在处理第二个请求时,服务器可以查找会话ID和关联的数据。

您可以在SO上找到有关会话的更多信息: 如何在Google App Engine上使用会话

XMPP API不会为您提供帮助,它用于在GAE服务器端代码与其他使用HTTP作为通信协议的XMPP客户端之间进行通信。

Channel API可用于从服务器->客户端发送数据,但实际上已实现为HTTP长轮询。 使用了多个长HTTP请求,并且不能保证您有一个套接字保持打开状态。 在此过程中打开和关闭多个套接字。 上面我所描述的会更复杂,并且会更昂贵。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM