【问题标题】:Info: WebSocket connection closed, Code: 1006 while trying to run websocket samples信息:WebSocket 连接已关闭,代码:1006 在尝试运行 websocket 示例时
【发布时间】:2015-07-02 13:33:27
【问题描述】:

我已嵌入 tomcat 8.0.20 并在我的服务器中使用它。我构建了 tomcat websocket 示例,当我尝试在我的服务器中为所有 4 个示例(回声、聊天等)运行它时 我来了

信息:WebSocket 连接关闭,代码:1006

在控制台中,它会打印类似的内容(每个示例的 url 都是正确的)

WebSocket 连接到 'ws://localhost:9763/examples/websocket/echoProgrammatic' 失败: WebSocket 握手期间出错:意外响应代码:302

当我在 tomcat 上部署它时,它显示 404 错误而不是 302。

谁能告诉我这是什么原因?

在pom中,我的依赖如下

 <dependency>
     <groupId>javax.websocket</groupId>
     <artifactId>javax.websocket-api</artifactId>
     <version>1.0</version>
     <scope>provided</scope>
 </dependency>

似乎没有正确部署 websocket 实现。有人可以帮忙吗?

【问题讨论】:

  • 你能写下你的连接尝试代码吗?你想从其他机器或同一台机器连接到 websocket 吗?
  • @Serkhan 我没有写任何代码。我只是构建了tomcat提供的示例并部署了它。

标签: java tomcat websocket tomcat8 embedded-tomcat-8


【解决方案1】:

这完全是一个错误。在 tomcat 示例中,所有 URL 都使用示例进行硬编码,但我的上下文是示例(不带 s)。那是个错误。

【讨论】:

    【解决方案2】:

    <dependency> <groupId>javax.websocket</groupId> <artifactId>javax.websocket-api</artifactId> <version>1.0</version> <scope>provided</scope> </dependency>

    使用Tomcat提供的websocket API和websocket实现(groupId:org.apache.tomcat),而不是一些随机的第三方jar。

    您可以搜索 Maven 或查看源代码的 res/maven 目录中的 pom 文件。

    范围“已提供”表示该 jar 仅在编译时使用,而不是在运行时使用。

    顺便说一句,当前版本的 Tomcat 实现了 WebSocket 1.1。

    对 websocket 端点的扫描由 javax.servlet.ServletContainerInitializer 的实现触发(在 tomcat-websocket.jarMETA-INF/services/javax.servlet.ServletContainerInitializer 文件中配置)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-27
      • 2020-09-06
      • 1970-01-01
      • 2013-10-18
      相关资源
      最近更新 更多