HTML5 WebSocket 详解及使用

这篇具有很好参考价值的文章主要介绍了HTML5 WebSocket 详解及使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

WebSocket 没用过的同学,听上去,可能觉得很难,其实很简单,本章讲解了WebSocket基本信息,以及附有代码例子

WebSocket 是什么?

WebSocket 是 HTML5 提供的一种在单个 TCP 连接上进行全双工通讯的协议。(双向通信协议)

WebSocket 的作用?

实现客户端与服务器之间的双向通信,允许服务端主动向客户端推送数据。

在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

WebSocket 和 HTTP 区别?

相同点:

        1. WebSocket  都是一样基于 TCP 的可靠性传输协议;

异同点:

        1. WebSocket  可以双向发送或接受信息,而 HTTP 是单向的(HTTP 通信只能由客户端发起,不具备服务器主动推送能力);

        2. WebSocket  的使用,需要先进行一次 客户端与服务器的握手,两者建立连接后才可以正常双向通信,而 HTTP 是一个 主动的 Request 对应一个 被动的Response;

WebSocket 的协议标识符?

如果服务器网址是 HTTP 那么 WebSocket  对应的是 ws

如果服务器网址是 HTTPS 加密的 那么 WebSocket  对应的是 wss

WebSocket 的作用总结?

WebSocket  是为了能够实现在 web 应用上与服务器进行双向通信的需求 而产生出来的协议,

相比于轮询 HTTP 请求的方式,WebSocket 节省了服务器资源,有效的提高了效率。文章来源地址https://www.toymoban.com/news/detail-407513.html

WebSocket 常用方法

常用方法 描述
Socket.send() 通过 Socket 向服务器发送信息
Socket.close() 关闭 Socket 连接

WebSocket 常用属性

常用属性 描述
Socket.readyState 获取当前链接状态 0:正在连接中,1:连接正常可以通信,2:连接关闭中,3:连接已关闭/连接失败
Socket.url 获取当前连接地址
Socket.binaryType 获取传输的数据类型

WebSocket 生命周期

生命周期 描述
Socket.onopen  连接建立时触发
Socket.onmessage 客户端接收服务端数据时触发
Socket.onerror 通信发生错误时触发
Socket.onclose 连接关闭时触发
// 设定默认值
var websock = null;

// 每10分钟 通过 websocket 向服务器发送一次心跳 证明客户端没有离线 依然在线可以正常接受消息
setInterval(this.websocketsend, 100000);


initWebsocket() {
    /*
    * 初始化 websock
    * 连接 服务器地址
    * 并绑定 websock 四个事件方法
    */
    this.websock = new WebSocket('ws://localhost:8080?userId=1');
    // 接收服务器返回的数据
    this.websock.onmessage = this.websocketonmessage;
    // 连接建立时触发
    this.websock.onopen = this.websocketonopen;
    // 连接中发生异常
    this.websock.onerror = this.websocketonerror;
    // 连接关闭时触发
    this.websock.onclose = this.websocketclose;
}


websocketonopen() {
    /*
    * websocket 初始化后 执行的方法
    * 调用 发送数据方法    
    */
    this.websocketsend();
},


websocketonerror() {
    /*
    * websocket 连接建立失败 执行的方法
    * 注:我这里加了个判断,如果联系建立失败就在连接几次
    */
    if(this.cishu < 5){
        this.cishu = this.cishu + 1;
        this.initWebsocket();
    }
},


websocketsend() {
    
    /*
    * websocket 数据发送 通过 websock.send() 方法向服务器发送数据
    * 注:这里随便发哈,主要作用就是通过这个动作,让客户端与服务端建立联系
    */
    let actions = {
        "test": "12345"
    };
    this.websock.send(JSON.stringify(actions));
},


websocketclose(e) { 
    /*
    * websocket 连接关闭 执行的方法
    */
    console.log('断开连接', e);
},


websocketonmessage(e) {
    /*
    * websocket 数据接收 执行的方法
    * 注:服务器通过 websocke 向客户端发送数据时,这里的方法就会自动触发啦
    */
    const redata = JSON.parse(e.data);
    switch (redata.messageType) {
        case 0: // 售后 提示
        // ... 执行
        break;
        case 1: // 库存 提示
        // ... 执行
        break;
        case 2: // 下架 提示
        // ... 执行
        break;
    }
},


到了这里,关于HTML5 WebSocket 详解及使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTML5中video元素详解

    https://blog.csdn.net/zhuchunyan_aijia/article/details/52277846 属性 说明 controls 显示标准的 HTML5 视频/音频播放器控制条、控制按钮。 autoplay 让文件自动播放。 loop 让文件循环播放。 preload 属性是用来缓存大体积文件的。它有三个可选值:“none” 不缓存、“auto” 缓存、“metadata” 只缓存

    2024年02月11日
    浏览(62)
  • html5中的meta标签用法详解

    来源:视频砖家 html5中的meta标签主要用于描述网页的元数据,它可以用于描述网页的标题、、描述、作者、版权等信息,还可以用于设置网页的字符集、设置网页的刷新时间、设置网页的跳转页面等。 meta charset=\\\"utf-8\\\":用于定义网页的字符集为 UTF-8,UTF-8 - Unicode 字符

    2024年02月16日
    浏览(40)
  • 【HTML5】拖放详解及实现案例

    2024年02月16日
    浏览(32)
  • HTML5语义化标签 header 的详解

    🌟🌟🌟 专栏详解 🎉 🎉 🎉 欢迎来到前端开发之旅专栏! 不管你是完全小白,还是有一点经验的开发者,在这里你会了解到最简单易懂的语言,与你分享有关前端技术和实用技巧的内容。此专栏的目标是提供易于理解且实用的内容,通过深入浅出的方式让大家掌握前端开

    2024年02月08日
    浏览(34)
  • HTML5+CSS3+移动web 前端开发入门笔记(二)HTML标签详解

    排版标签用于对网页内容进行布局和样式的调整。下面是对常见排版标签的详细介绍: 标题使用至标签进行定义。定义最大的标题,定义最小的标题。具有align属性,属性值可以是:left、center、right。 将给定的HTML代码转换为Markdown格式的标题标签如下所示: 效果演示: H3:

    2024年02月07日
    浏览(65)
  • HTML5中video元素事件详解(实时监测当前播放时间)

    video后边几个元素,可处理ios 系统的兼容性 事件 描述 loadstart 浏览器开始在网上寻找媒体数据 progress 浏览器正在获取媒体数据 suspend 浏览器暂停获取媒体数据,但是下载过程并滑正常结束 abort 浏览器在下载完全部媒体数据之前中止获取媒体数据,但是并不是由错误引起的

    2024年02月08日
    浏览(57)
  • HTML5开发实例-3D全景(ThreeJs全景Demo) 详解(图)

    在现在市面上很多全景H5的环境下,要实现全景的方式有很多,可以用css3直接构建也可以用基于threeJs的库来实现,还有很多别的制作全景的软件使用 本教学适用于未开发过3D全景的工程狮 如果觉得内容太无聊可以直接跳到最后 下载代码 整个3D全景所用的相关理论就不多说了

    2024年02月06日
    浏览(31)
  • HTML5中使用video标签

    隐藏下载: nodownload 隐藏播放速度: noplaybackrate 隐藏画中画: disablePictureInPicture=\\\"true\\\" 隐藏三个点: controlslist=\\\"nodownload noplaybackrate\\\" 隐藏音量按钮:

    2024年02月07日
    浏览(45)
  • HTML5——基础知识及使用

    html 标签是整个 html 文件的根标签(最顶层标签). head 标签中写页面的属性. body 标签中写的是页面上显示的内容. title 标签中写的是页面的标题. HTML 代码是由 “标签” 构成的. 例如: body hello /body 标签名 (body) 放到 中. 大部分标签成对出现. body 为开始标签, /body 为结束标签. 少

    2024年02月16日
    浏览(35)
  • HTML5 的离线储存怎么使用,工作原理

    TML5提供了一种称为离线储存(Offline Storage)的功能,它允许网页在离线时缓存和存储数据,以便用户可以在没有网络连接的情况下访问这些数据。离线储存是通过使用Web Storage API或者应用程序缓存(Application Cache)来实现的。 Web Storage API提供了两种用于离线储存的对象:se

    2024年02月15日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包