言惜 2019-12-18 16:40 采纳率: 0%
浏览 539

javaweb在web.xml中配置欢迎页面为websocket服务访问地址,无法直接通过访问项目根路径来访问websocket

如题,在web.xml中配置欢迎页面为websocket服务访问地址,无法直接通过访问项目根路径来访问websocket服务(访问路径为:ws://127.0.0.1:8080/项目名/),而访问路径后面加websocket服务url是可以访问的。

请教一下大神,是我的配置存在问题,还是访问websocket本身不支持通过欢迎页面访问(web服务器用的tomcat),如果是不支持的话,请问,通过什么方式能做到“通过访问项目根路径来访问websocket服务”,主要是为了达到通过ip和端口就能直接访问websocket服务,web.xml和websocket类内容如下:

web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>TestWeb</display-name>

  <servlet>
    <servlet-name>testAction</servlet-name>
    <servlet-class>com.ch.TestAction</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testAction</servlet-name>
    <url-pattern>/test</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>ws</welcome-file>
  </welcome-file-list>
</web-app>

websocket服务类:

@ServerEndpoint("/ws")
public class WebSocketServer {
   private Session session;
   //存储用户名和server的对应关系
//   private static Set<WebSocketServer> users = new HashSet<WebSocketServer>();

   //监听建立连接
   @OnOpen  
   public void open(Session session){   
       this.session=session;
       System.out.println(getDatetime(new Date()) + " 客户端已连接");
   }  

   //监听连接关闭  
   @OnClose  
   public void close(Session session){ //关闭websocket  
       System.out.println(getDatetime(new Date()) + " 客户端断开连接");
   }

   //监听用户发送的消息并向每个客户端推送消息
   @OnMessage
   public void sendMessage(String message){
       System.out.println(getDatetime(new Date()) + " 客户端发送消息:" + message);
   }

   @OnError 
   public void onError(Session session, Throwable error) { 
       System.out.println(getDatetime(new Date()) + " 客户端出错");
       error.printStackTrace();
   }



}

  • 写回答

1条回答 默认 最新

  • S什么东东 2023-11-22 18:45
    关注

    访问路径需要添加 @ServerEndpoint("/ws") 中的 /ws,可以理解为和访问http接口一样

    评论

报告相同问题?

悬赏问题

  • ¥15 数学的三元一次方程求解
  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题