Websockets无法在Google Compute Engine上部署的Tomcat Server上运行

时间:2017-10-15 01:29:19

标签: java apache tomcat websocket google-compute-engine

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

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

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

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

    以下是我制作服务器端点类的方法:

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

    我可以访问虚拟实例的外部IP和我的应用程序页面上的网站,但即使尝试Tomcat的websocket示例也会出错:

      

    WebSocket握手期间出错:意外的响应代码:404

    这也是我的serverc中的Connecter在/ 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的例子吗?

    对此案例的任何帮助都会非常感激,一直在寻找一种方法来解决这个问题。谢谢!

1 个答案:

答案 0 :(得分:0)

在我的情况下,当我部署战争而不导出任何源文件时,它就可以工作。