Websocket or native sockets for google appengine with java 8



我目前在Google的AppEngine上使用HTTP长轮询作为基于java 8的Webapp(标准环境(的用户消息传递和通知系统。我想用套接字 API 实现这一点。

在Google关于Java Sockets API的文档中,它提到:

要点:Java 8 运行时中的应用程序可以使用本机 Java 没有限制的套接字,包括使用 NIO 类和 他们的方法。

所以我有点困惑我应该使用什么,websockets还是本机java套接字?有区别吧?显然,Java 8运行时已经大大改变了套接字api,这就是为什么可以使用本机Java套接字而不是websockets的原因吗?

Java 7 运行时(现已弃用(是一个特殊的沙盒环境。因此,它在 JVM 上可以做什么方面有很多限制,例如,关于线程、标准 Java 库中的可用类、套接字、安全管理器等。

Java 8运行时具有截然不同的基础结构,并且大多数限制已被取消。它支持标准的公共Java库(当然包括本机Java套接字和NIO(,而不仅仅是Java 7运行时中的白名单子集。您链接的文档中的引用只是在宣传 Java 8 运行时优于 Java 7 运行时。

我想说的是,由你决定是否使用原生Java套接字。至少使用标准的Java库不是一件坏事。

编辑:这些额外的文档也可能是你感兴趣的:

  • https://cloud.google.com/appengine/docs/standard/java/outbound-requests
  • https://cloud.google.com/appengine/docs/standard/java/issue-requests#advantages_to_using_standard_java_calls_and_not_url_fetch_in_java_8

这个特定的谷歌文档正在讨论为应用程序外部的websocket服务器创建一个java客户端 - 这就是为什么它谈论Java 8 nio。此外,该页面(https://github.com/googlearchive/appengine-sockets-python-java-go/tree/master/java_socket_demo(中提供的示例指出了如何创建websocket客户端来查询DNS服务器。

现在,如果您想从java应用程序提供websocket,我在google的文档上找不到任何文档。

最新更新