【项目笔记】前端实现实时检索功能

简介: 前端实现websocket检索

一.需求背景

最近遇到一个需求是后端通过websocket给前端推送数据,数据分为八种类型,通过多选框来实时展示选中的类型的数据。

二.实现思路

首先用一个数组单独去接收websocket返回的数据,接收前进行类型判断,最后合并,这个项目websocket一次只返回一条数据。具体看你需求。表格展示是用过滤后的数组。这里因为是实时检测,所以在多选结束后更新一次数据以及websocket里过滤一次保证接下来的数据是过滤后的数据。这里用的数据方法是filter、 some。

三.代码实现

data () {
   
        return {
   
            tableDate1: [], // 类型一数据
            tableDate2: [], // 类型二数据
            tableDate3: [], // 类型三数据
            tableDate4: [], // 类型四数据
            tableDate5: [], // 类型五数据
            tableDate6: [], // 类型六数据
            tableDate7: [], // 类型七数据
            tableDate8: [], // 类型八数据
            tableDate: [], // 表格中展示的数据
            tableDates: [], // 接收websocket数据
            checkedSet: ['1', '2', '3', '4', '5', '6', '7', '8'], // 多选框选中数据 默认全选

        };
    },

    mounted () {
   
        this.initWebsocket(); // 创建websocket
    },

    methods: {
   
        initWebsocket () {
   
            // 判断浏览器是否支持websocket
            if ('WebSocket' in window) {
   
                // 创建一个websocket
                let ws = new WebSocket("ws://");
                ws.onopen = function () {
   
                    ws.send('前端向后端发送数据')
                }
                ws.onmessage = (e) => {
   
                    console.log("接收到的数据:", e);
                    // 表格里同时展示八中数据的最新的一条数据
                    // 类型判断
                    if (e.type == "1") {
   
                        this.tableDate1 = [e];
                    } else if (e.type == "2") {
   
                        this.tableDate2 = [e];
                    } else if (e.type == "3") {
   
                        this.tableDate3 = [e];
                    } else if (e.type == "4") {
   
                        this.tableDate4 = [e];
                    } else if (e.type == "5") {
   
                        this.tableDate5 = [e];
                    } else if (e.type == "6") {
   
                        this.tableDate6 = [e];
                    } else if (e.type == "7") {
   
                        this.tableDate7 = [e];
                    } else if (e.type == "8") {
   
                        this.tableDate8 = [e];
                    }
                    // 合并数据
                    this.tableDates = this.tableDate1.concat(this.tableDate2, this.tableDate3, this.tableDate3, this.tableDate4, this.tableDate5, this.tableDate6, this.tableDate, this.tableDate8)
                    this.tableDate = this.tableDates.filter((item) => {
   
                        return this.checkedSet.some(val => (val == item.type));
                    })
                }
                ws.onerror = (err) => {
   
                    console.log("接口错误:", err);
                }
                ws.onclose = (e) => {
   
                    this.initWebsocket(); // 断开重连
                }
            }
        },
        // 多选选完后
        checkChange () {
   
            // 对当前表格中数据进行过滤 
            this.tableDate = this.tableDate.filter((item) => {
   
                return this.checkedSet.some(val => (val == item.type));
            })
        }
    },

有啥不懂可以私信我,大部分注释都写了。

相关文章
|
27天前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
101 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
2月前
|
JavaScript 前端开发 Docker
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
在使用 Deno 构建项目时,生成的可执行文件体积较大,通常接近 100 MB,而 Node.js 构建的项目体积则要小得多。这是由于 Deno 包含了完整的 V8 引擎和运行时,使其能够在目标设备上独立运行,无需额外安装依赖。尽管体积较大,但 Deno 提供了更好的安全性和部署便利性。通过裁剪功能、使用压缩工具等方法,可以优化可执行文件的体积。
145 3
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
|
1月前
|
前端开发 测试技术
前端工程化的分支策略要如何与项目的具体情况相结合?
前端工程化的分支策略要紧密结合项目的实际情况,以实现高效的开发、稳定的版本控制和顺利的发布流程。
27 1
|
1月前
|
JSON 前端开发 搜索推荐
惊!这些前端技术竟然能让你的网站实现个性化推荐功能!
【10月更文挑战第30天】随着互联网技术的发展,个性化推荐已成为提升用户体验的重要手段。前端技术如JavaScript通过捕获用户行为数据、实时更新推荐结果等方式,在实现个性化推荐中扮演关键角色。本文将深入解析这些技术,并通过示例代码展示其实际应用。
79 4
|
1月前
|
前端开发 Unix 测试技术
揭秘!前端大牛们如何高效管理项目,确保按时交付高质量作品!
【10月更文挑战第30天】前端开发项目涉及从需求分析到最终交付的多个环节。本文解答了如何制定合理项目计划、提高团队协作效率、确保代码质量和应对项目风险等问题,帮助你学习前端大牛们的项目管理技巧,确保按时交付高质量的作品。
38 2
|
2月前
|
缓存 前端开发 JavaScript
前端架构思考:代码复用带来的隐形耦合,可能让大模型造轮子是更好的选择-从 CDN 依赖包被删导致个站打不开到数年前因11 行代码导致上千项目崩溃谈谈npm黑洞 - 统计下你的项目有多少个依赖吧!
最近,我的个人网站因免费CDN上的Vue.js包路径变更导致无法访问,引发了我对前端依赖管理的深刻反思。文章探讨了NPM依赖陷阱、开源库所有权与维护压力、NPM生态问题,并提出减少不必要的依赖、重视模块设计等建议,以提升前端项目的稳定性和可控性。通过“left_pad”事件及个人经历,强调了依赖管理的重要性和让大模型代替人造轮子的潜在收益
|
2月前
|
前端开发 JavaScript 开发工具
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(三)
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(三)
44 0
|
2月前
|
Web App开发 前端开发 JavaScript
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(二)
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(二)
57 0
|
2月前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
185 2
|
2月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
49 0