qhtcsqht 2016-09-14 09:08 采纳率: 0%
浏览 4308

springmvc 整合websocket 报错 404

第一: pom 配置文件:

javax.websocket
javax.websocket-api
1.0
provided<!--这个是从网上看的是为了解决jar包冲突的 -->



org.springframework

spring-websocket

4.1.6.RELEASE





org.springframework

spring-messaging

4.1.6.RELEASE


第二步: 【注册,启动 websocket server 和 握手拦截器 】
@Configuration

@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

@Override  
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    System.out.println("....注册......");
    registry.addHandler(myhandler(), "/websocket").addInterceptors(myInterceptors()).setAllowedOrigins("*");  
    registry.addHandler(myhandler(), "/sockjs/websocket").addInterceptors(myInterceptors()).withSockJS();  
}  

@Bean  
public WebSocketHandler myhandler() { 
    System.out.println("....服务端......");
    return new WebsocketEndPoint();  
}  

@Bean  
public HandshakeInterceptor myInterceptors() { 
    System.out.println("....握手拦截器......");
    return new HandshakeInterceptor();  
}  

}

public class WebsocketEndPoint extends TextWebSocketHandler {

private Logger logger = LoggerFactory.getLogger(WebsocketEndPoint.class);

@Override

protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {

  super.handleTextMessage(session, message);  
  logger.debug("GOMA === > WebSocketEndPoint.handlerTextMessage...");  

  TextMessage returnMessage = new TextMessage(message.getPayload()+" received at server");  
  session.sendMessage(returnMessage);  

}

}

public class HandshakeInterceptor extends HttpSessionHandshakeInterceptor {

private Logger logger = Logger.getLogger(getClass());

@Override

public boolean beforeHandshake(ServerHttpRequest request,

ServerHttpResponse response, WebSocketHandler wsHandler,

Map attributes) throws Exception {

logger.debug("GOMA ===> Before Handshake");

return super.beforeHandshake(request, response, wsHandler, attributes);

}

@Override

public void afterHandshake(ServerHttpRequest request,

ServerHttpResponse response, WebSocketHandler wsHandler,

Exception ex) {

logger.debug("GOMA ===> After Handshake");

super.afterHandshake(request, response, wsHandler, ex);

}

}

第三步:页面 client
我的tomcat 的端口是 9018
socket = new WebSocket('ws://localhost:9018/testSocket/websocket');

运行报错:
WebSocket connection to 'ws://localhost:9018/testSocket/websocket' failed: Error during WebSocket handshake: Unexpected response code: 400

这是为啥? 都配置了 ,为啥 是404 奇怪~~~ 那个大神给我解决一下

  • 写回答

1条回答 默认 最新

报告相同问题?

悬赏问题

  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)