首先我们声明WebSocker方便打字为ws。
WebSocker ws = new WebSocket();
1,首先是导包啦
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
或者说启用spring框架,因为spring已经整合了ws。
2,编写配置类
配置类:把spring中的ServerEndpointEx
@Configuration//说明他是一个配置类--》作用就是注入bean
public class WSConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
porter对象注入进来
3,编写服务终端类
用iava注解来
@ServerEndpoint 监听连接、
@OnOpen 连接成功、
@OnClose 连接关闭、
@OnMessage 客户端接收服务端数据触发等文章来源:https://www.toymoban.com/news/detail-813150.html
//这个类的作用:监听客户端谁连接了服务端。
@ServerEndpoint("/myWs") //编写监听的连接地址
@Component //被扫描到注入spring管理对象
@Slf4j //打印日志
public class wsServerEndpont {
//为了方便找到个session,所以使用了Hashmap。如果使用list需要遍历集合。
//为了线程安全使用ConcurrentHashMap。
static Map<String, Session> map = new ConcurrentHashMap<>();
@OnOpen //客户端连接到服务端的时候,声明服务端做的事情
public void onOpen(Session session) { //每一个web连接对于服务端都是一个session
//连接之后保留这段session。
map.put(session.getId(), session);
}
@OnMessage //收到客户端消息,执行的操作
public String onMessage(String str) { //接收到的消息
log.info("收到的消息{}", str);
return "已收到消息"; //返回的消息
}
@OnClose //用户连接关闭时执行的操作。
public void onClose(Session session) {
map.remove(session.getId());
log.info("浏览器以退出");
}
//实现定时任务
@Scheduled(fixedRate = 2000) //每隔多少秒执行定时任务
public void sengMsg(String message) throws IOException {
//向每个客户端发送请求
for (String s : map.keySet()) { //遍历对象
map.get(s) //或与session对象
.getBasicRemote() //获取session的远端
.sendText("想每一台用户"); //发送那个业务
}
}
}
@OnOpen 获取的session很重要文章来源地址https://www.toymoban.com/news/detail-813150.html
到了这里,关于两种实现WebSocket的方式,基于Java实现WebSocket。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!