java - Websockets 无法在 Google Compute Engine 上部署的 Tomcat 服务器上运行

标签 java apache tomcat websocket google-compute-engine

对于使用 websockets 部署应用程序来说是全新的,所以我觉得我错过了一些东西。我在 Debian 8 实例上使用 Tomcat 8.5。我在 GCE 上部署它的步骤:

  1. 使用 Tomcat 的点击部署。
  2. 将我的 .war 文件上传到已部署的站点。
  3. 将实例的 IP 提升为静态 IP。
  4. 在端口 80 上添加了目标为“websocket”的防火墙规则
  5. 在服务器实例的实例组上创建了一个负载平衡器。 (不太确定这是否有帮助,或者我是否设置正确)

负载均衡器看起来像 this .

我的 javascript 像这样创建 websocket(VDMServer 是 .war 的名称):

var websocket = new WebSocket("ws://[EXTERNALIP]/VDMServer/gameServerEndpoint");

下面是我创建服务器端点类的方式:

@ServerEndpoint("/gameServerEndpoint") 
public class GameServerEndpoint {
...
}

我能够通过虚拟实例的外部 IP 访问网站和我的应用程序页面,但即使尝试 Tomcat 的 websocket 示例也会出现错误:

Error during WebSocket handshake: Unexpected response code: 404

这也是我的 server.xml 中的连接器在/var/lib/tomcat8/conf 中的样子:

<Connector port="80" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

还看到了关于不包括 javax websocket 库的解决方案,所以我确保不这样做。 Here's what my .war's lib folder looks like.这应该不会影响 tomcat 示例,对吗?

如果您能就此案例提供任何帮助,我们将不胜感激,昨天一整天都在寻找解决此问题的方法。谢谢!

最佳答案

在我的例子中,当我在没有导出任何源文件的情况下部署 war 时它起作用了。

关于java - Websockets 无法在 Google Compute Engine 上部署的 Tomcat 服务器上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46750880/

相关文章:

java - 用于计算英国邮政编码之间距离的库

java - 在android中使用jcodec设置图像持续时间

java - 识别三角形程序

linux - sudo apt-get 在 ec2 实例类型 : ami-e0efab88 fails 上安装 apache2

tomcat - 404 错误 - Jenkins Tomcat

java - 无法登录 Kerberos 背后的 Jenkins

java - Android 以编程方式添加的 ListPreference 缺少标题

mysql - 在 MACOSX10.6 中加载 MySQLdb 模块时出错(Apache 和 mod_wsgi)

apache - 单节点集群(hadoop)中的最大容器是多少?

java - 使用 jenkins cli、jdk 8.144、jenkins v2.93 时获取 Java IO 异常