websocket 之 简单实现消息小红点,消息推送,或者说是未读提醒,新订单提醒(一)

本文介绍了使用WebSocket简单实现消息提醒,包括小红点显示未读消息数量和实时推送新订单通知。通过Java后端创建WebSocket服务,前端JS与服务器交互,模拟多个发送方和一个接收方的场景。在商家前端,当连接建立时,服务器返回未处理消息,前端根据消息数量更新小红点;用户下单后,服务器推送给商家,更新小红点计数。
摘要由CSDN通过智能技术生成

说明:这里是单机的websocket,没有部署到服务器,本人开了360浏览器和chrome来分别模拟两个买家客户端和商家客户端。

模拟对象暂时是只有一个接受方(consumer),许多个发送方(producer)

1、先给maven上个依赖

	<dependency>
      <groupId>javax.websocket</groupId>
      <artifactId>javax.websocket-api</artifactId>
      <version>1.1</version>
      <scope>provided</scope>
    </dependency>
    <!-- web socket -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-websocket</artifactId>
      <version>${
   spring.version}</version>
    </dependency>

2、先上个小红点的效果图

在这里插入图片描述这说明了有三条未处理的消息

3、基本的思路(简单实现)

写websocket需要定义好一个服务类

@ServerEndpoint(value = "/ws")
public class WsServer {
   

不了解@ServerEndpoint这个注解的同学戳这里或者百度
了解的朋友看到我的value就知道我的这个小server是只有一个房间的,模拟的接收方和发送方都在一个房间里进行交流,而需要如何做到多房间各聊各的,就需要在这个value上多加一些参数,比如 value= “/ws/room1”, value = “/ws/room2”,这样子不同的用户在new websocket时候就可以通过不同的value进入不同的房间进行通信。(扯远了~)

4、话不多说上代码

定义几个存储类
 // map存储userSession,msg将会广播给这些user,key存储着发送方的id和身份(user or admin ,也就是买家和商家)
    private static final Map<String,  Session> sessionMap = new ConcurrentHashMap<>();

    // 用一个list来存储string类型的简单消息
    private static final List<String> msgList = new ArrayList<>();

    // 自己的一个存储使用当前session的用户信息类
    private Client client = ClientThreadLocal.get();

核心方法

	@OnOpen
    public void connect(Session session, EndpointConfig config){
   
        System.out.println( client.getClientName() + " has connected");

        // 连接后将用户的类型和id传入map中保存
        sessionMap.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值