首页 > 解决方案 > 带有java 8的谷歌appengine的Websocket或本机套接字?

问题描述

我目前在 Google 的 AppEngine 上为我的基于 java 8 的 webapp(标准环境)的用户消息传递和通知系统使用 HTTP 长轮询。我想用 Socket API 来实现它。

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

重要提示:Java 8 运行时中的应用程序可以不受限制地使用本机 Java 套接字,包括使用 NIO 类及其方法。

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

标签: javasocketsgoogle-app-enginewebsocketgoogle-cloud-platform

解决方案


Java 7 运行时(现已弃用)是一种特殊的沙盒环境。因此,它对您可以在其 JVM 上执行的操作有很多限制,例如,关于线程、标准 Java 库中的可用类、套接字、安全管理器等。

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

我会说由您决定是否使用本机 Java 套接字。至少,使用标准 Java 库不会是一件坏事。

编辑:这些额外的文档也可能会引起您的兴趣:


推荐阅读