如何搭建websocket及使用

2023-11-02

保持一个长连接,当服务端有新的消息,能够实时的推送到使用方。像知乎的点赞通知、评论等,都可以使用WebSocket通信。

那该如何搭建呢

首先在utils文件夹下创建一个websocket.ts文件

import { onUnmounted } from 'vue';
const actions = {
    cmdList: [{ cmd: "C002" }, { cmd: 'C001' }],  //需要发往后端的命令 后端根据命令返回相应的数据
};
let randnum = localStorage.getItem('randnum'); //获取随机数
export function projectNoise() {
    var websocket: any = null
    // 判断当前环境是否支持Websocket
    if (window.WebSocket) {
        if (!websocket) {
            websocket = new WebSocket(`ws:172.16.10.52:9072/websocket/server/${randnum}`);
        } else {
            console.log('不支持websocket')
        }
        // 连接到消息得回调方法
        websocket.onmessage = function (e: any) {
            let res = JSON.parse(e.data);
            if (res.indexCmd == 'C001') {
                console.log(res)   //根据命令不同打印不一样的数据
            } else if (res.indexCmd == 'C002') {
                console.log(res)
            }
        }
        // 接受到服务端关闭连接时的回调方法
        websocket.onclose = function () {
            console.log('onclose断开连接')
            clearInterval(time);
        }
    }
.    //每10秒向后端发送一次ping
    let time = setInterval(() => {
        websocket.send('ping');
    }, 10000);
    // 连接成功建立得回调方法
    websocket.onopen = function (e: any) {
        websocket.send(JSON.stringify(actions));
    }
    //离开当前页面断开websocket 及销毁定时器
    onUnmounted(() => {
        websocket.close()
        clearInterval(time);
    })
}

建立完成后即可在需要使用的组件里面进行数据使用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何搭建websocket及使用 的相关文章

  • Oo 任何 IDE 中的 javascript 代码补全

    你知道有什么IDE可以自动完成这种代码吗 我这里有一个 javascript 类生成器 function var core bind function method scope if method instanceof Function t
  • React-native:将场景绑定到导航栏

    我正在整理这个提问 回答应用程序 并遇到了这个障碍 我想从导航栏触发场景中的功能 与登录应用程序类似 我在导航栏中有一个用于提交答案的按钮 RightButton route navigator index navState if rout
  • 如何将udp发送到udp node.js服务器?

    我对此很陌生 所以我真的不知道我在做什么 但我已经设置了一个 node js udp 服务器 我想从客户端 来自网站 向它发送一个数据包 但我不知道如何在 javascript 中做到这一点 或者是否可能 我不是在研究如何从 Node js
  • 访问sendBeacon发送的数据

    文档表明sendBeacon通过发送其数据HTTP POST request 但在 PHP 中 POST变量似乎是一个空数组 这是我的 JavaScript 代码 navigator sendBeacon beacon log php My
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • 如何在ASP.NET Webform中使用Jquery表单插件?

    我遇到了这个插件 http malsup com jquery form getting started http malsup com jquery form getting started 我想知道如何在 ASP NET WebForm
  • 使用 moment.js 检查输入日期是否为星期一

    好吧 我想检查日期是否是星期一 例如 var myDate new Date moment myDate DD MM YYYY dayIs monday 在我的国家 一周的第一天是星期一 所以 我真的想检查输入日期是否是一周的开始 我尝试使
  • 动画进度元素值

    我有一个progress元素 该元素如下所示 div class container div div div
  • 如何使用canvas.toDataURL()将画布保存为图像?

    我目前正在构建一个 HTML5 Web 应用程序 Phonegap 本机应用程序 我似乎不知道如何将画布保存为图像canvas toDataURL 有人可以帮我吗 这是代码 有什么问题吗 我的画布被命名为 canvasSignature J
  • HTML2canvas 和 Canvas2image,下载的屏幕截图不显示我的 HTML 图像

    我一直在开发一个 HTML 页面 我想将其转换为图像 我一直在使用 html2canvas 和 canvas2image 脚本并采用此代码http jsfiddle net 8ypxW 3 http jsfiddle net 8ypxW 3
  • javascript中按tab键时如何调用函数?

    我有一个这样的功能 function whenEmpty field if field value field style backgroundColor ffcccc alert Please fill the field field f
  • Typeahead.js substringMatcher 函数说明

    我只是在做一些研究Typeahead js这是一个非常酷的图书馆 感谢文档 我已经成功地获得了一个基本的示例 该文档也非常好 但是我试图弄清楚以下代码块实际上在做什么 var substringMatcher function strs r
  • 如何使JavaScript函数在Eclipse“大纲视图”中可见?

    我有这样的代码 但如果它在匿名函数中定义 则无法打开函数大纲 类没有问题 我该如何概述something2 请分享一些提示 我可以将所有函数标记为构造函数 但这是无效的方法 start of track event required deb
  • 单击关闭按钮后不显示 Google 一键登录 UI

    我正在尝试按照本指南使新的谷歌一键登录工作 https developers google com identity one tap web https developers google com identity one tap web
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012
  • 如何在打字稿文件中导入没有定义文件的js库

    随着我们的项目变得越来越大 我想从 JavaScript 切换到 TypeScript 以帮助进行代码管理 然而 我们使用许多库作为 amd 模块 我们不想将其转换为 TypeScript 我们仍然想将它们导入 TypeScript 文件
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没

随机推荐

  • 怎么画因果图?因果图绘图步骤详解

    因果图设计法 因果图法是一种利用图解法分析输人的各种组合情况的测试方法 它考虑了输入条件的各种组合及输入条件之间的相互制约关系 并考虑输出情况 例如 某一软件要求输人地址 具体到市区 如 北京 昌平区 天津 南开区 其中第2个输人受到第1个
  • C++tuple快速而随意的数据结构

    初始化 lt 学号 姓名 年龄 gt tuple
  • 转:通过注册表查看操作系统默认编码的方法

    在 转 使用DOS命令chcp查看windows操作系统的默认编码以及编码和语言的对应关系 介绍了一种通过chcp查看windows操作系统默认编码的方法 同时还有一种通过注册表查看默认编码的方法 虽然是以没有dos命令简单 但也可以使用
  • mbedtls交换服务器证书,mbedtls

    mbedtls系列文章 Demo工程源码 https github com Mculover666 mbedtls study demo 本工程基于STM32L41RCT6开发板 包含了本系列文章中所编写的所有Demo 持续更新 文章目录
  • xgboost 调参经验

    本文介绍三部分内容 xgboost 基本方法和默认参数 实战经验中调参方法 基于实例具体分析 1 xgboost 基本方法和默认参数 在训练过程中主要用到两个方法 xgboost train 和xgboost cv xgboost trai
  • LambdaQueryWrapper用法简单介绍

    1 层级关系 2 LambdaQueryWrapper 与QueryWrapper查询类似 不过使用的是Lambda语法 举例如下 package com mszlu blog dao pojo import lombok Data Dat
  • pywintypes.com_error: (-2147221008, ‘CoInitialize has not been called.‘, None, None)

    在使用xlwings多线程时 出现这样的报错 导致Excel表无法打开 是多线程调用的问题 解决方法 import pythoncom 在这个线程的函数开始运行之前调用这句即可 def daily report pythoncom CoIn
  • C语言:选择+编程(每日一练Day16)

    目录 选择题 题一 题二 题三 题四 题五 编程题 题一 数对 思路一 题二 截取字符串 思路一 本人实力有限可能对一些地方解释和理解的不够清晰 可以自己尝试读代码 或者评论区指出错误 望海涵 感谢大佬们的一键三连 感谢大佬们的一键三连 感
  • 解决vscode空格间距过小 tab不是四格的问题

    打开顺序 1 文件 首选项 设置 2 在框框中输入font 如下图所示 3 在 Editor Font Family的框框中 注意 是把第一个逗号前面的东西换成Consolas 如下图所示 即可
  • Java基础-作用域

    基本概念 在Java当中 主要的变量就是属性 成员变量 和局部变量 java中作用域的分类 全局变量 也就是属性 作用域为整个类体 局部变量 除了属性之外的其他变量 作用域为定义的代码块当中 目录 局部变量 举例 结果 局部变量没有默认值
  • Scala安装

    1 需要到官方下载window版本的Scala2 12x 注意去官方第找到Download下载 2 直接下载 第二种下载方式打开技能大赛课程里面的资料 3 双击安装文件进行安装 在安装的过程需要注意安装目录不要空格 中文和特殊符号 建议在D
  • Docker安装和Portainer图形界面安装

    文章目录 1 概述 2 docker简介 2 1 架构 2 2 优点 2 3 docker和虚拟机比较 比如vmware 3 docker安装 centos环境 3 1 卸载旧版本 没有可以不执行 3 2 设置仓库 3 3 正式安装 3 4
  • 数组练习题2

    1 题目 打印杨辉三角的前n行 注 杨辉三角的本质是它的两条斜边都是1 其余数则等于它肩上的两个数之和 如 1 11 121 1331 14641 思路 计算杨辉三角的时候1 先定义第一列的值为1 2 定义对角线上的值为1 3 根据某项值
  • 卸载 kubernetes

    kubeadm reset f modprobe r ipip lsmod rm rf kube rm rf etc kubernetes rm rf etc systemd system kubelet service d rm rf e
  • linux:真机安装centos linux(突发事件:解决卡在安装界面){寻找镜像--u启制作--引导u盘--解决卡在安装界面--安装配置}

    首先准备一个8 16 g的u盘 格式为 fat32 寻找镜像 寻找可以上阿里云或者各大镜像网站以及官网寻找 我是在阿里云找的 阿里巴巴开源镜像站 OPSX镜像站 阿里云开发者社区 aliyun com 寻找你要找的版本 我这里就选7 9版本
  • 【JAVA并发编程-黑马】第一章

    文章目录 一 创建线程的几种方式 二 查看进程的方法 三 线程运行原理 栈桢Debug 四 线程运行原理图解 4 1 类加载 4 2 启动main线程 五 线程上下文切换 Thread Context Switch 六 常用方法 6 1 r
  • 【记录11】前端项目上传至gitee仓库及相关命令

    本篇文章适用于初次使用git base来上传项目至gitee仓库的初学者 使用git base来上传项目至国内gitee 判断当前项目是否连接仓库 2022 3 29 查看当前的用户 git config user name 查看当前用户地
  • Android Genemotion模拟器一直卡在黑屏界面

    Android Genemotion模拟器一直卡在黑屏界面 解决办法 调大对应的模拟器的内存 第一步 右键你要修改的模拟器 弹出的菜单中选择 Settings 第二步 增大或者减小内存
  • MySQL必知必会 学习笔记 第九章 用正则表达式进行搜索

    正则表达式是用来匹配文本的特殊的串 它用正则表达式语言来建立 MySQL支持的正则表达式仅为正则表达式的一个很小的子集 可通过WHERE子句使用正则表达式过滤SELECT检索出的数据 检索条件列包含字符100的所有行 SELECT colu
  • 如何搭建websocket及使用

    保持一个长连接 当服务端有新的消息 能够实时的推送到使用方 像知乎的点赞通知 评论等 都可以使用WebSocket通信 那该如何搭建呢 首先在utils文件夹下创建一个websocket ts文件 import onUnmounted fr