信息:尝试运行WebSocket示例时,WebSocket连接关闭,代码为1006。

4
我已经嵌入了Tomcat 8.0.20并在我的服务器上使用它。我构建了Tomcat WebSocket示例,当我尝试在服务器上运行所有4个示例(Echo,chat等)时,我会得到以下错误:

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

在控制台中打印出类似以下内容(每个示例的URL都是正确的):

WebSocket连接至 'ws://localhost:9763/examples/websocket/echoProgrammatic' 失败: WebSocket握手期间发生错误: 非预期响应代码: 302

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

有人能告诉我可能的原因是什么吗?

在pom.xml中,我的依赖关系如下所示:

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

看起来 WebSocket 的实现没有被正确部署。有人可以帮忙吗?


你能写出连接尝试的代码吗?你想要从其他机器或同一台机器连接到 WebSocket 吗? - Sarkhan
@Serkhan 我没有写任何代码。我只是构建了Tomcat提供的示例并部署了它。 - Thusitha Thilina Dayaratne
2个回答

4
使用Tomcat提供的websocket API和websocket Implementation(groupId: org.apache.tomcat),而不是一些随意的第三方jar包。
您可以搜索Maven或查看源代码中res/maven目录下的pom文件。
“provided”作用域意味着该jar仅在编译时使用,而不是运行时。
顺便说一句,当前版本的Tomcat实现了WebSocket 1.1。
扫描websocket端点是由javax.servlet.ServletContainerInitializer的实现触发的(如配置在tomcat-websocket.jar的META-INF/services/javax.servlet.ServletContainerInitializer文件中)。

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接