实现效果 两个客户端相互发消息:
0. 前端代码
websocket通讯演示
发送消息
接收消息
1. 引入依赖
2. 配置类org.springframework.boot spring-boot-starter-websocket
package com.janet;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter(){
return new ServerEndpointExporter();
}
}
3. 服务类
package com.janet;
import io.netty.util.internal.ConcurrentSet;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.atomic.AtomicInteger;
@ServerEndpoint("/ws")
@Component
@Slf4j
public class WebSocketServer {
private static AtomicInteger personNum = new AtomicInteger();
private static ConcurrentSet webSocketSet = new ConcurrentSet<>();
private Session session;
@OnOpen
public void onOpen(Session session) {
this.session = session;
webSocketSet.add(this);
personNum.incrementAndGet();
log.info("新用户上线,当前在线人数:{}", personNum.get());
}
@OnClose
public void onClose() {
webSocketSet.remove(this);
personNum.decrementAndGet();
log.info("用户下线,当前在线人数:{}", personNum.get());
}
@OnMessage
public void onMessage(String message, Session session) throws IOException {
log.info("来自客户{}的消息:{}", session.getId(), message);
for (WebSocketServer webSocketServer : webSocketSet) {
webSocketServer.session.getBasicRemote().sendText(session.getId() + "说:" + message);
}
}
}
这样就ok啦~



