一开始出现这个错误,我也以为是缺少commons-io
包,就给它导入进去,发现还是报这个错误,后来一想,我启动这个websocket服务是通过Tomcat插件的方式启动的,而且websocket的访问是ws://
开头的,而我这里为了偷懒,是在之前的一个springboot工程里面写的代码,所以我就把与springboot相关的依赖去掉,再启动Tomcat就成功了
下面贴出websocket简易搭建实例:
注意我这里是引入javaee-api
的方式创建websocket,之后我会以spring-boot-starter-websocket
的方式创建websocket
新建一个maven
工程,不要直接创建springboot
工程
pom.xml
<packaging>war</packaging>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<!-- java编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/</path>
</configuration>
</plugin>
只贴了重要的几个,其他的自己补全,注意这里使用Tomcat方式启动,所以需要war包
@ServerEndpoint("/websocket")
public class WebSocketTest {
@OnOpen
public void onOpen(Session session) throws IOException {
System.out.println("websocker连接" + session);
session.getBasicRemote().sendText("欢迎");
}
@OnClose
public void onClose(Session session){
System.out.println("websocket已经关闭" + session);
}
@OnMessage
public void onMessage(String message, Session session) throws IOException {
System.out.println("收到客户端发来的消息" + message);
}
这里只需要写这一个class即可,通过Tomcat方式启动该程序,我使用的是火狐浏览器,安装Simple WebSocket Client插件,打开之后在URL那里填写ws://localhost:8080/websocket
,再点击旁边的按钮,即可建立连接
springboot整合websocket见这里