2015-04-24 97 views
4

我已经嵌入tomcat 8.0.20并在我的服务器中使用它。我建立tomcat的WebSocket的例子,当我试图在我的服务器运行的所有4例(回声,聊天,等..) 我得到信息:WebSocket连接关闭,代码:1006,同时尝试运行websocket示例

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

在它打印像控制台(网址为每个样品正确)

WebSocket连接到 'WS://本地主机:9763 /示例/网页套接字/ echoProgrammatic' 失败: 错误在WebSocket handsh期间AKE:意外的响应代码:302

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

谁能告诉我可能是什么原因呢?

在POM,我的依赖性如下

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

看来,WebSocket的实现都不能正确部署。有人可以帮忙吗?

+0

你可以写你的连接尝试代码吗?你想从其他机器或相同的websocket连接? – Sarkhan

+0

@Serkhan我没有写任何代码。我只是建立了tomcat提供的例子并部署了它。 –

回答

0

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

4

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

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

您既可以搜索Maven,也可以查看source youre的res/maven目录中的pom文件。

作用域“提供”意味着该jar只在编译时使用,而不是在运行时使用。

BTW,当前版本的Tomcat实现WebSocket 1.1。

扫描websocket端点是由javax.servlet.ServletContainerInitializer的实现触发的(配置为META-INF/services/javax.servlet.ServletContainerInitializer文件tomcat-websocket.jar)。