如题,在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();
}
}