错误写法
@ClientEndpoint
@Component
public class WebSocket{
private static Map<String, String> sysUserMap = new HashMap<String, String>();
@Autowired
private ISysUserService sysUserService;
@OnOpen
public void onOpen(Session session, @PathParam(value = "userId") String userId) {
// 你的业务逻辑
SysUser sysUser = sysUserService.getById(this.userId); // 这里sysUserService 变成了null
}
}
正确写法
@RestController
@Slf4j
@ServerEndpoint("/websocket/{userId}") //此注解相当于设置访问URL
public class WebSocket{
private static Map<String, String> sysUserMap = new HashMap<String, String>();
private ISysUserService sysUserService;
@Autowired
public void setRepository(ISysUserService sysUserService) {
WebSocket.sysUserService = sysUserService;
}
@OnOpen
public void onOpen(Session session, @PathParam(value = "userId") String userId) {
// 你的业务逻辑
SysUser sysUser = sysUserService.getById(this.userId); // 这里sysUserService 就正常了
}
}
亲测有效 感觉写法有点诡异,希望有大佬可以帮忙指出。