- 第一种情况
原因:这里是因为url的路径写错了,请仔细检查是否路径写错了(楼主这里忘了在端口号后面加上项目发布名了)
- 第二种情况
上一种情况,我使用的是SSM框架,后来想用Spring Boot来尝试一下,结果发现按照原来的写法无法连接。如果你使用的是Spring Boot请检查如下配置
声明将@ServerEndPoint的注解交由Spring管理
package com.yunxi.im.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
import java.io.Serializable;
/**
* TODO websocket配置
*
* @author xiaoshuaishuai
* @date 2019-05-21 11:18
*/
@Configuration
public class WebSocketConfig implements Serializable {
private static final long serialVersionUID = 7600559593733357846L;
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
在websocket的服务端需要加上@Component注解
package com.yunxi.im.controller;
import com.yunxi.im.model.User;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.util.concurrent.ConcurrentHashMap;
/**
* TODO websocket服务
*
* @author xiaoshuaishuai
* @date 2019-05-21 11:19
*/
@ServerEndpoint(value = "/websocket")
@Component
public class WebSocketController {
/**
* 当前连接数量
*/
private static volatile int onlineCount = 0;
private static ConcurrentHashMap<Session, User> loginMap = new ConcurrentHashMap<>();
@OnOpen
public void onOpen(Session session) {
System.out.println("I'm Coming......");
}
@OnClose
public void onClose() {
}
@OnError
public void onError(Session session, Throwable error) {
System.out.println("Error");
}
@OnMessage
public void onMessage(String message, Session session) {
}
}
目前是我遇到的一些小坑,如果后面有问题会持续更新!