我正在尝试在Spring4中使用websocket Java,我已经创建了一个服务器处理程序。以下是我的代码
import java.util.logging.Logger;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.WebSocketMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
public class ServerHandler extends TextWebSocketHandler{
private Logger logger = Logger.getLogger(this.getClass().getName());
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
// TODO Auto-generated method stub
logger.info("Connection clodes with websocket server: session id " + session.getId());
}
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
// TODO Auto-generated method stub
logger.info("Connected user with websocket server: session id " + session.getId());
}
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
// TODO Auto-generated method stub
super.handleMessage(session, message);
}
@Override
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
// TODO Auto-generated method stub
super.handleTransportError(session, exception);
}
}
接下来,我创建了一个websocket配置器。以下是代码
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
@Configuration
@EnableWebSocket
public class WebsocketConfig implements WebSocketConfigurer{
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myHandler(), "/websocket").withSockJS();
}
@Bean
public ServerHandler myHandler() {
return new ServerHandler();
}
}
在我的客户端(JavaScript)中,我尝试连接到服务器
var sock = new SockJS('http://localhost:9999/websocket');
当我试图执行客户端时,我得到了一个404错误,问题出在哪里?
发布于 2016-09-27 22:10:42
向WebsocketConfig类添加@Controller注释,这样它就可以处理来自客户端的请求。
@EnableWebSocket
@Controller
public class WebsocketConfig implements WebSocketConfigurer{并设置setAllowedOrigins(),避免连接不同域名时出错。
registry.addHandler(myHandler(), "/websocket").setAllowedOrigins("*").withSockJS();https://stackoverflow.com/questions/39726404
复制相似问题