脑血管堵塞有什么症状| 湿气太重吃什么药| 介怀是什么意思| 时兴是什么意思| 张良和刘邦是什么关系| 莺莺燕燕是什么意思| 芭蕉花炖猪心治什么病| 女性什么时候排卵| 排尿困难是什么原因男性| 上校军衔是什么级别| 肝火旺盛喝什么茶| 现在有什么好的创业项目| 阴道里面长什么样| 转氨酶偏高是什么原因引起的| 正餐是什么意思| 结婚十一年是什么婚| 酸梅汤什么人不能喝| 鸡胸是什么病| 老保是什么意思| 小金鱼吃什么食物| 手指头发麻是什么原因引起的| 扁桃体发炎是什么引起的| 贵子是什么意思| 什么是闭合性跌打损伤| 疝气嵌顿是什么意思| 夯实是什么意思| 头伏饺子二伏面三伏吃什么| 黄体酮有什么作用| 什么蔬菜含维生素d| 流清鼻涕是什么感冒| 走路腰疼是什么原因| 脂肪燃烧是什么感觉| 三双是什么意思| dm是什么单位| 法医是干什么的| 高血钾是什么意思| 盗墓笔记的结局是什么| 小弟一阵阵的疼什么原因| e2是什么意思| 晕车吃什么能缓解| 绍兴本地人喝什么黄酒| 心脏下边是什么器官| 脚痛是什么原因| 跟腱炎什么症状| 下面干涩是什么原因导致的| 胃胀胃不舒服吃什么药| 对食什么意思| 24号来月经什么时候是排卵期| 7一9点是什么时辰| 萎缩性胃炎吃什么药能治好| 为什么胸口疼| 周瑜为什么打黄盖| 梦见鳄鱼是什么预兆| 嗓子疼喝什么| 大拇指发抖是什么原因| 什么叫痤疮| 眼晴干涩模糊用什么药| 碱和小苏打有什么区别| 纠察是什么意思| 孔雀开屏是什么意思| 贝前列素钠片主治什么病| 五常大米是什么意思| 心肌供血不足吃什么药| 为什么医生不建议献血小板| 晴字五行属什么| 英国为什么叫日不落帝国| 64年属什么的| 冰箱eco是什么意思| 爱是什么意思| 阶级是什么意思| 怀孕第一个月最怕什么| 裙带菜不能和什么一起吃| 李姓男孩起什么名字好| 尿潜血是什么意思| 什么叫阴阳水| 壁虎是什么类动物| 益母草能治什么病| 家是什么| 美好的近义词是什么| 肺阴不足的症状是什么| 藿香泡水喝有什么好处| 胃肠功能紊乱是什么意思| 大公鸡是什么牌子| 打葡萄糖点滴有什么用| 女性后背疼挂什么科室| 四月初一是什么星座| 护肝养肝吃什么药最好| 脑白质变性是什么病| 定增股票是什么意思| 美什么美什么| 为什么会早产| 今天是什么生肖日| 结婚25年属于什么婚| gt是什么| 吃鱼眼睛有什么好处| 琴棋书画指的是什么| 身体突然消瘦是什么原因| 任督二脉是什么意思| 为什么会猝死| 血脂稠吃什么| 宰相和丞相有什么区别| 夏天晚饭吃什么比较好| 北京有什么好吃的美食| 干燥综合征挂什么科| 异想天开是什么意思| 夏天喝什么解暑| 海棠花什么时候开花| 血小板高是什么问题| 不什么不| 应激反应是什么意思| 正常舌头是什么颜色| 黑乌龙茶属于什么茶| 什么东西有助于睡眠| 什么的浪花| 噬是什么意思| 不能人道什么意思| 胃酸吃什么药效果最好| 移植后屁多是什么原因| pap是什么意思| 6.28什么星座| 人的胆量由什么决定| 5月是什么季节| 什么是腺体| 克山病是什么病| 蝗虫用什么呼吸| 1.13是什么星座| 肝郁吃什么食物好| 别出心裁是什么意思| 异常心电图是什么意思| 爱吃甜食是什么原因| 风起云涌是什么意思| 农历五月十八是什么日子| 晕车吃什么好| 阴超能检查出什么| 3月14号是什么星座| 喜欢吃冰的是什么原因| 庚什么意思| 寻常疣用什么药膏除根| 孕妇做无创是检查什么| 空心人是什么意思| 腹部b超挂什么科| 胎神是什么意思| 耳朵响是什么原因引起的| 为什么会突然得荨麻疹| 早茶是什么意思| 执业药师什么时候考试| 吃什么立马排便| 审美是什么意思| 孕妇早上吃什么早餐好| 足跟血筛查什么疾病| 精子为什么叫怂| 舒坦是什么意思| 麦冬有什么功效| 什么品牌的笔记本好| 老农民韩美丽结局是什么| 进产房吃什么补充体力| 天秤座是什么象| 尿里红细胞高什么原因| 肝是起什么作用的| 嗜睡是什么症状| 蚊子喜欢什么| 改姓需要什么手续| 梦见洗手是什么意思| 眼睛模糊什么原因| 贵阳有什么特产| rh血型是什么血型| rx是什么意思| 强迫症吃什么药效果好| 怀孕什么时候建档| 开导是什么意思| 减脂吃什么蔬菜| 承欢膝下是什么意思| 为什么喜欢秋天| 2018属什么生肖| 无人区是什么意思| 专升本有什么专业| 三和大神是什么意思| 炒牛肉用什么配菜| vod是什么意思| 当兵什么时候入伍| 吃什么保护眼睛| 2月3日什么星座| 栋字五行属什么| 植物有什么| 咳嗽可以喝什么| 世界上最贵的狗是什么| 我知道你在想什么| 下线是什么意思| 鹅蛋和什么不能一起吃| 心病是什么病有哪些症状| zqsg是什么意思| 什么是无精症| hsg是什么检查项目| 钼靶是什么检查| 护士资格证什么时候考| 三十周年结婚是什么婚| 烟头属于什么垃圾| 擦汗表情是什么意思| 做梦杀人了是什么征兆| 掉头发是因为什么| ed50是什么意思| skp是什么品牌| 电视开不了机是什么原因| 天天射精对身体有什么危害| 补钾吃什么| 血脂高吃什么油好| 人间正道是沧桑是什么意思| 泡脚用什么东西泡最好| 微波炉里不能放什么| 什么叫腔梗| 欢是什么动物| 有什么病| 静脉曲张吃什么药| 为什么招蚊子| 什么是重金属| 一生一世是什么生肖| 7月17日是什么日子| 太阳穴长痘痘是什么原因| 双喜临门是什么生肖| 宫内孕和宫外孕有什么区别| 孩子高低肩有什么好办法纠正| 肠胃蠕动慢吃什么药| 盆腔积液是什么原因造成的| 草单斤是什么字| 老玻璃是什么意思| 星五行属性是什么| 太后是什么意思| 胸口有痣代表什么意思| 10月30日什么星座| 小孩口腔溃疡是什么原因引起的| 雪里红是什么菜| 总胆汁酸高是什么原因| 光棍一条是什么生肖| 术后病人吃什么营养恢复快| 支原体感染是什么引起的| 血小板减少吃什么能补回来| 为什么会焦虑| 嘴唇红肿是什么原因| 望眼欲穿是什么意思| 轻微脑震荡有什么表现| 福寿延绵是什么意思| 降尿酸什么药最好| 壬子五行属什么| 膝关节置换后最怕什么| 墨西哥说什么语言| 尿是绿色的是什么原因| 朝霞什么晚霞什么| 佛是什么| 腹部b超挂什么科| 黄豆什么时候种| 星标朋友是什么意思| 胆囊炎适合吃什么食物| 六害是什么意思| 清凉补是什么| 大腿正面是什么经络| 肾炎有什么症状| 梦见打人是什么意思| 小孩肚子痛吃什么药| 皖鱼是什么鱼| 南浦是什么意思| 做小吃什么生意最赚钱| 西米露是什么| 才华横溢是什么意思| 四月十五是什么星座| 百度

我家是农村的,因为家里自己在原宅基地基...

本文介绍了如何使用WebSocket协议在SpringBoot工程中实现小程序聊天功能,并提供了相关代码示例。同时,作者演示了如何使用JMeter进行压测,便于性能评估。
百度   没有选举民主,就没有真正的代议制民主。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

今天试着写了写小程序聊天页面中的信息底层是怎么实现的,而 WebSocke t协议,客户端和服务端都可以主动的推送消息,只要建立链接就能推送消息。

准备 demo

前置条件,需要安装小程序编译器。

页面效果如下图:
在这里插入图片描述

后端代码,大家一看就知道,主要这是springboot工程,你懂的怎么配置与启动。

/**
 * @author 7DGroup
 * @Title: Mywebsocket
 * @Description: 服务端
 * @date 2019/12/24 / 13:00
 */
 
@ServerEndpoint("/chatWebsocket")
@Component
public class Mywebsocket {

    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date sendDate;

    public Date getSendDate() {
        sendDate = new Date();
        return sendDate;
    }

    private static final Logger logger = LoggerFactory.getLogger(Mywebsocket.class);

    /**
     * 当前在线连接数
     */
    private static AtomicInteger onlineSize = new AtomicInteger(0);
    private static Set<Mywebsocket> webSocketSet = new ConcurrentSet<Mywebsocket>();
    private Session session;

    @OnOpen
    public void onOpen(Session session) {
        this.session = session;
        webSocketSet.add(this);
        addOnlineSize();
        logger.info("有客户端连接 当前在线人数:" + getOnlineSize());
        try {
            Msg msg = new Msg();
            sendMessage("你已成功连接"+"code:200");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @OnClose
    public void onClose() {
        logger.info("关闭");
        webSocketSet.remove(this);
        subOnlineSize();
        logger.info("有客户端关闭连接,当前在线人数为:" + getOnlineSize());
    }

    @OnMessage
    public void onMessage(String message, Session session) {
        logger.info("接收客户端消息 :" + message);
        if (session.isOpen()) {
            //群发消息
            for (Mywebsocket item : webSocketSet) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                //群发
                synchronized (session) {
                    item.sendInfoToAll(message);
                }
            }
        }

    }

    @OnError
    public void onError(Session session, Throwable error) {
        error.printStackTrace();
    }

    public void sendMessage(String message) throws IOException {
        if (session.isOpen()) {
            this.session.getAsyncRemote().sendText(message);
        }
    }

    public void sendInfoToAll(String message) {
        webSocketSet.parallelStream().forEach(item -> {
            try {
                if (session.isOpen()) {
                    HashMap<String, Object> hashMap = new HashMap<>();
                    hashMap.put("content", "7DGroup欢迎您的到来");
                    hashMap.put("data", getSendDate());
                    hashMap.put("message", message);
                    item.sendMessage(JSON.toJSONString(hashMap));
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            logger.info("群发消息 " + message);
        });

    }

    public int getOnlineSize() {
        return onlineSize.get();
    }

    public void addOnlineSize() {
        onlineSize.addAndGet(1);
    }

    public void subOnlineSize() {
        onlineSize.addAndGet(-1);
    }

小程序代码:

Page({
    // 初始页面数据
    data: {
        scrollTop: 0,
        list: []
    },
    // 监听页面加载
    id: 0,
    onLoad: function () {
        wx.connectSocket({
            url: 'ws://127.0.0.1:8081/chatWebsocket'
        });
        wx.onSocketMessage(msg => {
            var data = JSON.parse(msg.data.toString());
            data.id = this.id++;
            data.role = 'server';
            var list = this.data.list;
            list.push(data);
            this.setData({
                list: list
            });
            this.rollingBottom()
        })
    },
    // 发送内容
    count: 0,
    massage: '',
    send: function () {
        // 判断发送内容是否为空
        if (this.message) {
          wx.sendSocketMessage({
            data: this.message,
          });
            // 我自己的消息
            console.log(this.data.list);
            var list = this.data.list;
            list.push({
                id: this.count++,
                content: this.message,
                role: 'me'
            });
            this.setData({
                list: list
            });
            this.rollingBottom()
        } else {
            // 弹出提示框
            wx.showToast({
                title: '消息不能为空哦~',
                icon: 'none',
                duration: 2000
            })
        }
    },
    // 监听input值的改变
    bindChange(res) {
        this.message = res.detail.value
    },
    // 页面卸载,关闭连接
    onUnload() {
        wx.onSocketClose();
        wx.showToast({
            title: '连接已断开~',
            icon: 'none',
            duration: 2000
        })
    },
    // 聊天内容始终显示在最低端
    rollingBottom(e) {
        wx.createSelectorQuery().selectAll('.list').boundingClientRect(rects => {
            rects.forEach(rect => {
                this.setData({
                    scrollTop: rect.bottom
                })
            })
        }).exec()
    }
});

页面布局:


<view class="container">
  <!-- 聊天输入 -->
  <view class="message">
    <form>
      <input type="text" cursor-spacing="50" placeholder="请输入聊天内容..." bindinput="bindChange"></input>
    </form>
  </view>
    <button type="primary" bindtap="send" formType="reset" size="small" button-hover="blue">发送</button>

  <view wx:if="{{show}}">{{text}}</view>
    <!--<view wx:wx:elif="{{}}"></view>-->
    <view class="wrap">
        <scroll-view scroll-y class="chat" scroll-top="{{scrollTop}}">
            <view class="list">
                <view class="chat-news" wx:for="{{list}}" wx:key="{{item.id}}">
                    <!-- 根据角色判断 -->
                    <block wx:if="{{item.role === 'me'}}">
                        <!-- 自己的消息显示在右侧 -->
                        <view class="news-lf">
                            <text class="new-txt">{{item.content}}</text>
                            <image class="new-img" src="/images/0.png"></image>
                        </view>
                    </block>
                    <!-- 对方的消息显示在左侧 -->
                    <block wx:else>
                        <view>
                            <image class="new-img" src="/images/1.png"></image>
                            <text class="new-txt new-text">{{item.content}}</text>
                        </view>
                    </block>
                </view>
            </view>
        </scroll-view>
    </view>

</view>

通过上面代码就能把小程序聊天页面跑起来。

JMeter 压测

打开 JMeter 新建 WebSocket Sampler(如果没有就安装下)

在这里插入图片描述
编写脚本:
在这里插入图片描述
增加结果查看数:
在这里插入图片描述
增加监听器 Summary Report

在这里插入图片描述

总结

这是一个很简单的示例,带着大家入门如何做脚本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zuozewei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值
泰国是一个什么样的国家 尿隐血是什么原因 杂菌2个加是什么意思 乔迁送什么水果 大象的鼻子像什么
喝柠檬水对身体有什么好处 老公护着婆婆说明什么 狗狗咳嗽吃什么药 视功能是什么 来月经腰疼的厉害是什么原因
满面红光是什么意思 阑尾粪石是什么意思 脊髓空洞症吃什么药 什么叫近视 什么泡水喝杀幽门螺杆菌
檀香是什么味道 ecg医学上什么意思 山东简称为什么是鲁不是齐 裂纹舌是什么原因引起的 心火大吃什么能清火
小孩出汗多是什么原因造成的hcv9jop2ns2r.cn 湿热吃什么食物好得快hcv8jop0ns0r.cn 心什么什么什么0297y7.com 两重天什么意思hcv8jop2ns1r.cn 油嘴滑舌是什么意思hcv8jop9ns1r.cn
甘露醇有什么作用hcv8jop1ns7r.cn 耳石症是什么意思hcv9jop1ns4r.cn 8月12日是什么星座adwl56.com 丑拒是什么意思hcv8jop5ns0r.cn eap是什么hcv9jop4ns0r.cn
火红火红的什么hcv9jop7ns1r.cn 梦见老公出轨了是什么征兆hcv8jop4ns3r.cn 桑叶有什么功效和作用hcv8jop5ns8r.cn 摸摸唱是什么hcv8jop5ns6r.cn 芹菜和什么菜搭配最好hcv8jop2ns9r.cn
九五年属什么生肖hcv9jop3ns2r.cn 三叉神经是什么病mmeoe.com 吃什么补筋和韧带最快hcv8jop1ns3r.cn 女性雄激素过高是什么原因引起的hcv8jop3ns6r.cn blacklabel是什么牌子hcv8jop0ns8r.cn
百度 技术支持:蜘蛛池 www.kelongchi.com