JAVA使用WebSocket实现多客户端请求

本文介绍如何使用Java的WebSocket实现多客户端通信。采用一个服务端处理多个客户端连接的方式,通过存储客户端ID来实现消息推送。首先引入WebSocket依赖,配置扫描@ServerEndpoint注解。服务端的WebSocket地址用于建立连接,并在onOpen和onMessage方法中处理前端发送的消息。前端测试时,将数据传回并建立通信。文中还提到了一些优秀的博主资源,帮助理解WebSocket前后端交互。
摘要由CSDN通过智能技术生成

工作前提:两个服务之间实现聊天通讯,因为介于两个服务,两个客户端

方案1:多个服务端,多个客户端,使用redis把用户数据ip进行存储,交互拿到redis数据进行推送

方案2: 一个服务端,多个客户端,拿到客户端的id和需要推送的id进行拼接存储

此文章使用的是方案2

1. 引入依赖包


		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-websocket</artifactId>
		</dependency>

2. 加入配置进行扫描

ServerEndpointExporter 是由Spring官方提供的实现,用于扫描@ServerEndpoint注解实例。

@Configuration
public class WebSocketConfig {
	@Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}

3. 服务端,这里主要是前端访问地址:ws://ip:port/push/websocket/{ {"fromUserId":"321654","toUserId":"123456"}},这个地址主要用于建立连接,会去主动调用onOpen方法,然后当客户端(前端)发送消息时,会主动调用onMessage方法,再进行自己一列处理后,再推送给它需要发送的userId(用户),就去调用senndMessage方法。

@Component
@ServerEndpoint("/push/websocket/{param}")
@Slf4j
@EqualsAndHashCode
public class WebSocketServer {
	 /**静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。*/
    private static int onlineCount = 0;
    /**concurrent包的线程安全Set,用来存放每个客户端对应的WebSocket对象。*/
    p
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值