返回顶部
首页 > 资讯 > 前端开发 > JavaScript >WebSocket使用以及在vue如何使用问题
  • 890
分享到

WebSocket使用以及在vue如何使用问题

WebSocket使用vue使用WebSocketWebSocket在vue如何使用 2023-05-20 05:05:41 890人浏览 八月长安
摘要

目录websocketWEBSocket 实例socket.io 简介客户端 api总结WebSocket WebSocket 是 HTML5 开始提供的一种在单个 tcp 连接上进

WebSocket

WebSocket 是 HTML5 开始提供的一种在单个 tcp 连接上进行全双工通讯的协议。

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输

在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

现在,很多网站为了实现推送技术,所用的技术都是 ajax 轮询。轮询是在特定的的时间间隔(如每 1 秒),由浏览器对服务器发出 Http 请求,然后由服务器返回最新的数据给客户端的浏览器。

这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而 HTTP 请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。

html5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。

img

浏览器通过 javascript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据

当你获取 Web Socket 连接后,你可以通过 send() 方法来向服务器发送数据,并通过 onmessage 事件来接收服务器返回的数据。

WebSocket 实例

WebSocket 协议本质上是一个基于 TCP 的协议。

为了建立一个 WebSocket 连接,客户端浏览器首先要向服务器发起一个 HTTP 请求,这个请求和通常的 HTTP 请求不同,包含了一些附加头信息,其中附加头信息"Upgrade: WebSocket"表明这是一个申请协议升级的 HTTP 请求,服务器端解析这些附加的头信息然后产生应答信息返回给客户端,客户端和服务器端的 WebSocket 连接就建立起来了,双方就可以通过这个连接通道自由的传递信息,并且这个连接会持续存在直到客户端或者服务器端的某一方主动的关闭连接

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>菜鸟教程(runoob.com)</title>
        <script type="text/javascript">
            function WebSocketTest() {
                if ("WebSocket" in window) {
                    alert("您的浏览器支持 WebSocket!")
                    // 打开一个 web socket
                    var ws = new WebSocket("ws://localhost:9998/echo")
                    ws.onopen = function () {
                        // Web Socket 已连接上,使用 send() 方法发送数据
                        ws.send("发送数据")
                        alert("数据发送中...")
                    }
                    ws.onmessage = function (evt) {
                        var received_msg = evt.data
                        alert("数据已接收...")
                    }
                    ws.onclose = function () {
                        // 关闭 websocket
                        alert("连接已关闭...")
                    }
                } else {
                    // 浏览器不支持 WebSocket
                    alert("您的浏览器不支持 WebSocket!")
                }
            }
        </script>
    </head>
    <body>
        <div id="sse">
            <a href="javascript:WebSocketTest()" rel="external nofollow" >运行 WebSocket</a>
        </div>
    </body>
</html>

socket.io 简介

socket.io 是一个类库,内部封装了 WebSocket,可以在浏览器与服务器之间建立实时通信。

如果某些旧版本的浏览器不支持 WebSocket,socket.io 会使用轮询代替。另外它还具有可发送二进制消息、多路复用、创建房间等特性,因此相比直接使用原生 WebSocket,socket.io 是更好的选择。

开发一个实时应用主要分两部分:服务端和客户端,socket.io 分别提供了相应的 npm 包供我们方便地调用。

接下来就通过一个生动形象且有趣的栗子分别介绍这两大块。

现在假设李白张三,李四,王五 3 个人加入了一个叫 棋牌室 的房间,在文章结束时我们将拥有一个麻雀虽小五脏俱全的峡谷英雄在线聊天室。

客户端 api

npm i socket.io-client  //安装socket.io 为客户端提供的npm包

接下来就可以在页面上建立到服务器的连接了

import io from "socket.io-client"
const socket = io("http://127.0.0.1:3001") // 建立连接

向服务器发送消息

const socket = io("http://127.0.0.1:3001")
socket.emit("talk", "打快点啊,天都要黑了")

接收服务器发来的信息

const socket = io("http://127.0.0.1:3001")
socket.on("talk", (data) => {
    console.log(data) //打印data
})

李白看到了瑶的消息,强忍住问候对方家人的冲动,像哄那啥似地说道:

const socket = io("http://127.0.0.1:3001")
socket.on("talk", (data) => {
    socket.emit("talk", "你这么敢干啥!")
})

客户端的功能到这基本上也开发完了。

核心 api 就是 on 和 emit 用于收发消息,既简单又优雅

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: WebSocket使用以及在vue如何使用问题

本文链接: https://lsjlt.com/news/214012.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • WebSocket使用以及在vue如何使用问题
    目录WebSocketWebSocket 实例socket.io 简介客户端 api总结WebSocket WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进...
    99+
    2023-05-20
    WebSocket使用 vue使用WebSocket WebSocket在vue如何使用
  • VueAwesomeSwiper在VUE中的使用以及遇到的问题有哪些
    这篇文章主要为大家展示了“VueAwesomeSwiper在VUE中的使用以及遇到的问题有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VueAwesome...
    99+
    2024-04-02
  • vue使用websocket概念及示例
    目录概念部分:使用示例概念部分: 1,WebSocket 是 HTML5 提供的 TCP 连接上进行全双工通讯的协议。一次握手之后,服务器和客户端可以互相主动通信,双向传输数据。 2...
    99+
    2024-04-02
  • 在vue中使用echarts的方法以及可能遇到的问题
    目录1、安装2、在vue中引入(全局引入)3、在vue中的使用4、模板代码放在哪个位置5、完整的一个vue页面实例:6、实现效果7、可能遇到的问题,下载不成功。使用8、11:25-3...
    99+
    2024-04-02
  • vue项目中如何使用websocket
    这篇文章将为大家详细讲解有关vue项目中如何使用websocket,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是websocket?“WebSocket 是 HTML5 开始提供的一种在单个 TCP...
    99+
    2023-06-29
  • 如何在HTML5中使用WebSocket
    本篇文章给大家分享的是有关如何在HTML5中使用WebSocket,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。客户端代码:<html><head>&l...
    99+
    2023-06-09
  • Vue中组件递归及使用问题
      先来说下需求,就是一个表单,会有树形结构一样,会有子表单,表单显示什么内容是后台通过接口数据来确定的;这个时候就和树形结构一样,肯定会有子组件的递归;这次是自己第一次写递归,遇到...
    99+
    2024-04-02
  • 如何解析vue data不可以使用箭头函数问题
    这篇文章将为大家详细讲解有关如何解析vue data不可以使用箭头函数问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先需要明确,a() {}和 b: () =>...
    99+
    2024-04-02
  • Vue项目中使用setTimeout存在的潜在问题及解决
    目录使用setTimeout存在的潜在问题上代码总结使用setTimeout存在的潜在问题 在开发项目中遇到这样的序曲,点击按钮弹框,每次进入的时候都需要默认选中Android, 这...
    99+
    2023-01-28
    Vue使用setTimeout 使用setTimeout的潜在问题 Vue setTimeout
  • Android Hilt的使用以及遇到的问题
    目录简介 导入Hilt组件层次 组件默认绑定 简单使用 @HiltAndroidApp 介绍 使用 @AndroidEntryPoint 介绍 使用@Module 和 @Instal...
    99+
    2024-04-02
  • laravel如何使用websocket
    什么是WebSocket? WebSocket是一种在单个TCP连接上进行全双工通信的协议。它使得浏览器和服务器之间的实时通信变得更加容易。与HTTP请求不同,WebSocket连接是持久的,这意味着...
    99+
    2023-08-31
    php laravel websocket
  • 如何在CocosCreator中使用http和WebSocket
    目录一、HttpGET二、HTTPPOST三、WebSocket四、移植Egret的http和websocket到cocosCocosCreator版本2.3.4 一、HttpGET...
    99+
    2024-04-02
  • websocket在vue2中如何封装使用
    这篇文章主要讲解了“websocket在vue2中如何封装使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“websocket在vue2中如何封装使用”吧!websocket在vue2中的封...
    99+
    2023-07-05
  • 在vue-cli中如何引用jQuery、bootstrap以及使用sass、less编写css
    这篇文章主要介绍在vue-cli中如何引用jQuery、bootstrap以及使用sass、less编写css,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!引入bootstrap1....
    99+
    2024-04-02
  • vue中怎么使用websocket
    这篇文章主要介绍“vue中怎么使用websocket”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue中怎么使用websocket”文章能帮助大家解决问题。1. 在utils下新建websocke...
    99+
    2023-06-29
  • vue中使用swiper失效问题及解决
    目录vue使用swiper失效问题描述问题解决vue2+swiper踩坑记 effect等参数无效总结vue使用swiper失效 问题描述 需求是 要在一个循环的列表中第一组数据后添...
    99+
    2023-01-14
    vue使用swiperm swiperm失效问题 vue使用swiper失效
  • Vue中使用setTimeout问题
    目录Vue使用setTimeout使用setTimeout存在的潜在问题总结Vue使用setTimeout 今天使用setTimeout 来修改一个变量的值以实现提示框的自动消失。...
    99+
    2023-01-28
    Vue setTimeout Vue使用setTimeout 使用setTimeout问题
  • 如何解决vue中less的使用问题
    小编给大家分享一下如何解决vue中less的使用问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!安装less依赖:npm install less less-loader --save修改webpack.base.con...
    99+
    2023-06-25
  • Spring多线程的使用以及问题详解
    目录前言为什么使用多线程Springboot中是否对多线程方法进行了封装如何控制线程运行中的各项参数corePoolSize:核心线程数maximumPoolSize:最大线程数ke...
    99+
    2024-04-02
  • 在Java中使用WebSocket
    如果您觉得本博客的内容对您有所帮助或启发,请关注我的博客,以便第一时间获取最新技术文章和教程。同时,也欢迎您在评论区留言,分享想法和建议。谢谢支持! 一、  简介 1.1 什么是WebSocket WebSocket是一种协议,用于...
    99+
    2023-09-02
    java websocket 网络协议
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作