websocket 使用示例

news2024/11/24 5:05:36

websocket 使用示例

  • 前言
  • html中使用
  • vue3中使用
    • 1、安装websocket依赖
    • 2、代码
  • vue2中使用
    • 1、安装websocket依赖
    • 2、代码

前言

即时通讯webSocket 的使用
在这里插入图片描述

html中使用

以下是一个简单的 HTML 页面示例,它连接到 WebSocket 服务器并包含一个文本框、一个发送按钮以及 WebSocket 连接、读取和关闭事件的监听。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>WebSocket 示例</title>
    <script>
      // 1. 创建一个 WebSocket 对象
      let socket = new WebSocket("ws://192.168.22.199/WebSocket/");
      // 2. 监听 WebSocket 连接事件
      socket.addEventListener("open", function (event) {
        console.log("连接事件成功:", event);
      });
      // 3. 监听 WebSocket 收到消息事件
      socket.addEventListener("message", function (event) {
        console.log("接收到的消息事件:", event.data);
      });
      // 4. 监听 WebSocket 关闭事件
      socket.addEventListener("close", function (event) {
        console.log("关闭WebSocket:", event);
      });
      // 5. 监听 WebSocket 出错事件
      socket.addEventListener("error", function (event) {
        console.error("WebSocket error报错:", event);
      });

      // 6、webSocket发送消息
      function sendMessage() {
        let message = document.getElementById("messageInput").value;
        if (message) {
          socket.send(message);
        }
      }
    </script>
  </head>
  <body>
    <h1>WebSocket 示例</h1>
    <input type="text" id="messageInput" placeholder="请输入要发送的信息" />
    <button onclick="sendMessage()">Send</button>
  </body>
</html>

vue3中使用

1、安装websocket依赖

npm install websocket

2、代码

<template>
  <div>
    <div>
      <button @click="send">发消息</button>
    </div>
  </div>
</template>

<script>
import { defineComponent, ref, onUnmounted, onMounted } from 'vue'

export default defineComponent({
  name: 'coPy',
  setup () {

    const path = 'ws://192.168.0.200:8005/qrCodePage/ID=1/refreshTime=5'

    let socket = ''
    const open = () => {
      console.log('socket连接成功')
    }
    const error = () => {
      console.log('连接错误')
    }
    const getMessage = (msg) => {
      console.log(msg.data)
    }
    const send = () => {
      socket.send('输入成功')
      console.log('消息发送成功')
    }
    const close = () => {
      console.log('socket已经关闭')
    }
    const initWs = () => {
      if (typeof (WebSocket) === 'undefined') {
        alert('您的浏览器不支持socket')
      } else {
        // 实例化socket
        socket = new WebSocket(path)
        // 监听socket连接
        socket.onopen = open
        // 监听socket错误信息
        socket.onerror = error
        // 监听socket消息
        socket.onmessage = getMessage
      }
    }
    onMounted(() => {
      initWs()
    })

    onUnmounted(() => {
      close()
    })

    return {
    }
  }
})
</script>
<style lang="less" scoped>
</style>

vue2中使用

1、安装websocket依赖

npm install websocket

2、代码

<template>
    <div>
        <button @click="send">发消息</button>
    </div>
</template>
 
<script>
export default {
    data () {
        return {
            path:"ws://192.168.0.200:8005/qrCodePage/ID=1/refreshTime=5",
            socket:""
        }
    },
    mounted () {
        // 初始化
        this.init()
    },
    methods: {
        init: function () {
            if(typeof(WebSocket) === "undefined"){
                alert("您的浏览器不支持socket")
            }else{
                // 实例化socket
                this.socket = new WebSocket(this.path)
                // 监听socket连接
                this.socket.onopen = this.open
                // 监听socket错误信息
                this.socket.onerror = this.error
                // 监听socket消息
                this.socket.onmessage = this.getMessage
            }
        },
        open: function () {
            console.log("socket连接成功")
        },
        error: function () {
            console.log("连接错误")
        },
        getMessage: function (msg) {
            console.log(msg.data)
        },
        send: function () {
            this.socket.send(params)
        },
        close: function () {
            console.log("socket已经关闭")
        }
    },
    destroyed () {
        // 销毁监听
        this.socket.onclose = this.close
    }
}
</script>
 
<style>
 
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1512553.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

案例--某站视频爬取

众所周知&#xff0c;某站的视频是&#xff1a; 由视频和音频分开的。 所以我们进行获取&#xff0c;需要分别获得它的音频和视频数据&#xff0c;然后进行音视频合并。 这么多年了&#xff0c;某站还是老样子&#xff0c;只要加个防盗链就能绕过。&#xff08;防止403&#xf…

第十四届蓝桥杯C++B组编程题题目以及题解

a.冶炼金属&#xff08;二分&#xff09; 思路&#xff1a; 设任意一条冶炼记录投入金属数量为a,产出金属为b. 对于每一条冶炼记录我们都可以得到 一个转换率V的范围&#xff1a; b<a/v<b1即a/b< v <a/(b1) 为什么是b1呢&#xff1f;因为既然能产出b个金属&#xf…

SpringCloud网关路由及实现

目录 1 前言 2 实现步骤 2.1 创建一个模块作为网关并引入相关依赖 2.3 设置启动类 2.4 配置路由 3 网关路由的补充内容 3.1 路由断言 3.2 路由过滤器 1 前言 前端请求不能直接访问微服务&#xff0c;而是要请求网关。原因及网关的作用如下&#xff1a; ①网关做安全控制…

16. UE5 RPG获取GE应用的回调,并根据Tag设置数据显示到窗口

在上一篇介绍了对标签如何在项目中设置&#xff0c;这一篇先讲解一下如何在GE里面使用GameplayTag标签。 之前我在第十一章节中 11. UE5 RPG使用GameplayEffect修改角色属性&#xff08;二&#xff09;介绍了一些GE的属性&#xff0c;在UE 5.3版本中&#xff0c;修改的配置方式…

Docker部署黑马商城项目笔记

部署后端 创建mysql目录如下&#xff0c;上传对应的文件 运行以下命令 docker run -d \--name mysql \-p 3306:3306 \-e TZAsia/Shanghai \-e MYSQL_ROOT_PASSWORD123 \-v ./mysql/data:/var/lib/mysql \-v ./mysql/conf:/etc/mysql/conf.d \-v ./mysql/init:/docker-entry…

LeetCode(力扣)算法题_1261_在受污染的二叉树中查找元素

今天是2024年3月12日&#xff0c;可能是因为今天是植树节的原因&#xff0c;今天的每日一题是二叉树&#x1f64f;&#x1f3fb; 在受污染的二叉树中查找元素 题目描述 给出一个满足下述规则的二叉树&#xff1a; root.val 0 如果 treeNode.val x 且 treeNode.left ! n…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的常见手势识别系统(深度学习模型+UI界面代码+训练数据集)

摘要&#xff1a;开发手势识别系统对于增强人机交互和智能家居控制领域的体验非常关键。本博客详尽阐述了通过深度学习技术构建手势识别系统的过程&#xff0c;并附上了全套实施代码。系统采用了先进的YOLOv8算法&#xff0c;并通过与YOLOv7、YOLOv6、YOLOv5的性能对比&#xf…

PTA- - -个位数统计(C语言)

Hello,好久没更新啦&#xff0c;今天给大家讲解一下PTA平台上面的“个位数统计”这道题吧~ 题目是要统计一个数字每个位上数字出现的次数。下面是一个解决方案的思路和相应的 C 语言代码&#xff1a; 思路&#xff1a; 初始化一个大小为10的数组&#xff0c;用于计数每个数字…

Kubernetes(k8s第四部分之servers)

1&#xff0c;为什么不使用round-robin DNS&#xff1f; 因为DNS有缓存&#xff0c;不会清理&#xff0c;无法负载均衡 ipvs代理模式&#xff0c;这种模式&#xff0c;kube-proxy会监视Kubernetes Service 对象和Endpoints&#xff0c;调用netlink接口以相应地创建ipvs规则并…

小迪安全39WEB 攻防-通用漏洞CSRFSSRF协议玩法内网探针漏洞利用

#知识点&#xff1a; 逻辑漏洞 1、CSRF-原理&危害&探针&利用等 2、SSRF-原理&危害&探针&利用等 3、CSRF&SSRF-黑盒下漏洞探针点 #详细点&#xff1a; CSRF 全称&#xff1a;Cross-site request forgery&#xff0c;即&#xff0c;跨站请求…

十四、软考-系统架构设计师笔记-云原生架构设计理论与实践

1、云原生架构背景 云原生架构定义 从技术的角度&#xff0c;云原生架构是基于云原生技术的一组架构原则和设计模式的集合&#xff0c;旨在将云应用中的非业务代码部分进行最大化的剥离&#xff0c;从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、…

图片怎样去水印?三款热门工具推荐!

在数字化时代&#xff0c;图片去水印成为了许多设计师、摄影师和普通用户的基本需求。面对市面上琳琅满目的去水印工具&#xff0c;究竟哪款应用能够在效果、易用性和效率上更胜一筹呢&#xff1f;今天&#xff0c;就让我们来对比三款国内外热门的图片去水印应用&#xff0c;看…

基于pci多功能采集卡——pci9640

一、追逐潮流&#xff0c;应运而生 信息社会的高速发展&#xff0c;在很大程度上取决于信息与信号处理的先进性。数字信号处理技术的出现改变了信号与信号处理技术的整个面貌&#xff0c;而数据采集作为数字信号处理的必不可少的前期工作在整个数字系统中起到关键性乃至决定性的…

250V FDP51N25 N沟道功率MOSFET具有业界领先的低导通电阻特性,有助于提供出色的开关性能

FDP51N25 UniFETTM MOSFET 是基于平面条纹和 DMOS 技术的高压 MOSFET。适用于降低导通电阻&#xff0c;提供更好的开关性能以及更高的雪崩能量强度。FDP51N25适用于开关电源转换器应用&#xff0c;如功率因数校正 (PFC)、平板显示屏 (FPD) TV 电源、ATX 和电子灯镇流器。 FDP51…

数学建模-模糊性综合评价模型

中医药是中国传统文化的重要组成部分&#xff0c;凝聚了中华民族千百年来智慧的结晶。作为中医的发源地&#xff0c;中国政府一直致力于保护、发展和推广中医药&#xff0c;采取了一系列政策措施[]。目前&#xff0c;中国面临着老龄化日益加剧&#xff0c;老年人群中慢性疾病和…

Elasticsearch使用Kibana进行基础操作

一、Restful接口 Elasticsearch通过RESTful接口提供与其进行交互的方式。在ES中&#xff0c;提供了功能丰富的RESTful API的操作&#xff0c;包括CRUD、创建索引、删除索引等操作。你可以用你最喜爱的 web 客户端访问 Elasticsearch 。事实上&#xff0c;你甚至可以使用 curl …

力扣每日一题 在受污染的二叉树中查找元素 哈希 DFS 二进制

Problem: 1261. 在受污染的二叉树中查找元素 思路 &#x1f468;‍&#x1f3eb; 灵神题解 &#x1f496; 二进制 时间复杂度&#xff1a;初始化为 O ( 1 ) O(1) O(1)&#xff1b;find 为 O ( m i n ( h , l o g 2 t a r g e t ) O(min(h,log_2target) O(min(h,log2​targ…

八路DI八路DO,开关量转RS-485/232,数据采集远程I/O模块 YL60

特点&#xff1a; ● 八路开关量输入&#xff0c;八路开关量输出 ● 通过RS-485/232接口可以读取输入的电平状态 ● 通过RS-485/232接口可以设定输出状态 ● 信号输入&#xff0c;输出及电源之间不隔离 ● 宽电源供电范围&#xff1a;8 ~ 32VDC ● 可靠性高&#xff0c;…

UI 学习 二 可访问性 模式

一 颜色对比 颜色和对比度可以用来帮助用户看到和理解应用程序的内容&#xff0c;与正确的元素交互&#xff0c;并理解操作。 颜色可以帮助传达情绪、语气和关键信息。可以选择主色、辅助色和强调色来支持可用性。元素之间足够的颜色对比可以帮助低视力的用户看到和使用你的应…

【面试精讲】Java线程6种状态和工作原理详解,Java创建线程的4种方式

Java线程6种状态和工作原理详解&#xff0c;Java创建线程的4种方式 目录 一、Java线程的六种状态 二、Java线程是如何工作的&#xff1f; 三、BLOCKED 和 WAITING 的区别 四、start() 和 run() 源码分析 五、Java创建线程的所有方式和代码详解 1. 继承Thread类 2. 实现…