今天写一个前后端交互的websocket , 本来写着挺顺利的,但测试的时候蒙了,前端websocket发的连接请求竟然连接不上
返回状态Status 报了个404 ,然后看后台onError方法也没触发
只是报了下面几条警告信息
WARN o.s.web.servlet.PageNotFound | No mapping for GET /websocket/***
WARN o.s.web.servlet.PageNotFound | No mapping for GET /websocket/***
WARN o.s.web.servlet.PageNotFound | No mapping for GET /websocket/***
没头绪,就上网找了一下,
有说 需要配置Websocket 注入ServerEndpointExporter 的 ;
有说 需要添加websocket jar包的
但看这些操作的缘由,却和我的实际情况不太一样,
不过也照着做试了一下,依然没有变化。。。
不由地怀疑,我是在后端代码那边少写了什么???
于是又仔细看了几遍 几个相关的博客,忽然发现有的加了 @Component 注解,有的没加,有可能问题出现在这里
果然,在加了这个@Component 注解后,网页和后台的websocket 就连接成功了
所以,很怀疑那些博客上没加这个注解的,是不是也能连接成功?觉得还是看官方解释好,坑能少踩点!
后端代码
HtmlSocketServer
package com.cloud.simulator.controller; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import javax.websocket.OnClose; import javax.websocket.OnError; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.server.PathParam; import javax.websocket.server.ServerEndpoint; import org.springframework.stereotype.Component; /** * @ServerEndpoint 注解是一个类层次的注解,它的功能主要是将目前的类定义成一个websocket服务器端, * 注解的值将被用于监听用户连接的终端访问URL地址,客户端可以通过这个URL来连接到WebSocket服务器端 * 即 @ServerEndpoint 可以把当前类变成websocket服务类 */ //访问服务端的url地址 @ServerEndpoint(value = "/websocket/simulator/{userNo}") @Component public