一、websocket封装github地址:https://github.com/yquanmei/websocket-demo。
二、需求
最近公司要求加入websocket的页面有点多,每次都重复写websocket代码太累,所以就简单封装一下。

三、websocket.js
1、需要的参数:
(1)websocket链接每次都需要外部传入,公司链接是ip+url组成,所以就分成了2个部分。
(2)点击某个按钮后,需要断开websocket,所以就是否断开的参数。
(3)onopen、onmessage时的信息交流,需要发送消息,和接收消息,或进行其他操作,所以有对应的3个方法。
(4)因为有时候websocket断了,但是没有进行信息的联通,浏览器端不知道断了,就需要进行心跳检测。如果不需要心跳检测,也可以传入参数heartBeat: false

/** @params {boolean} cancelSocket:是否断开websocket,默认false* @params {str} socketIp: websocket的ip,默认后台调取* @params {str} wsUrl: websocket的链接,无默认值* @params {str} sockUrl: 不支持websocket时的链接,无默认值* @params {func} openSendMsg: 打开websocket的onopen时执行的方法* @params {func} sendMsg: 连接上后,onmessage中发送消息的方法,无默认值* @params {func} receiveMsg: 连接上后,onmessage中接收到消息的方法,无默认值* @params {boolean} heartBeat:是否打开心跳检测,默认true* @params {num} timeout: 心跳检测的间隔时间,默认10分钟*/

2、主要方法:initEventHandle中的onopen、onmessage、onclose、onerror方法,具体操作由外部传入

ws.onclose = function () {if (getConnect == 1) {originThis.reconnect(wsUrl, sockUrl);console.log('close():断开');}};ws.onerror = function () {if (getConnect == 1) {originThis.reconnect(wsUrl, sockUrl);console.log('error():报错');}};ws.onopen = function () {if (originThis.opts.heartBeat) {heartCheckObj.reset().start(); // 心跳检测重置}if (ws.readyState == 1) {var msg = originThis.opts.openSendMsg();if (!msg) {var openTimeSpe = curTime();console.log('onopen():连接成功,' + openTimeSpe);msg = '打开时间:' + openTimeSpe;}ws.send(msg);// ws.send('打开时间:' + openTimeSpe);}};ws.onmessage = function (event) {if (originThis.opts.heartBeat) {heartCheckObj.reset().start(); // 拿到任何消息都说明当前连接是正常的}originThis.opts.sendMsg && originThis.opts.sendMsg(ws); // 发送消息originThis.opts.receiveMsg && originThis.opts.receiveMsg(event); //接收消息}

四、websocket.html
1、echo.websocket.org/可以用来测试,只要发送消息,这个网站就会返回发送过去的消息。

  $.newSocket({socketIp: 'echo.websocket.org/',wsUrl: '',sockUrl: null,openSendMsg: openSendMsg,sendMsg: sendMsg,receiveMsg: receiveMsg,timeout: 10000});

2、如果是取消连接,则直接传入cancelSocket:false就行

 $.newSocket({cancelSocket: true});

四、代码:https://github.com/yquanmei/websocket-demo

websocket demo,websocket封装,jquery下的websocket封装相关推荐

  1. Springboot下使用WebSocket和浏览器进行长连接通信

    WebSocket是Html5里面的一个东西. WebSocket有别于从前的Http协议,http是无状态的.请求了一次服务器,下一次请求连自己都不知道自己上一次请求了什么内容, 然而,webSoc ...

  2. 使用tomcat8下的websocket进行web前后端通信

    2019独角兽企业重金招聘Python工程师标准>>> 软件版本:tomcat8,tomcat8的lib下的websocket-api 学习文件:example下的websocket ...

  3. vue封装websocket_Vue中使用websocket

    websocket demo export default { data() { return { websock: null, } }, created(){ //页面刚进入时开启长连接 this. ...

  4. springboot框架下利用websocket实现即时通讯

    springboot框架下利用websocket实现即时通讯(文章末尾有git项目打包文件,直接下载使用即可) 用websocket实现简单的在线聊天,先画个时序图,直观感受下流程 SystemCon ...

  5. kestrel web服务器性能对比,Asp.Net Core 3.0 Kestrel服务器下 高性能 WebSocket Server

    最近研究.net core 的各种高性能类型,内存池之类的东西,基于kestrel 服务器的websocket ,写个例子练下手 把原生的Websocket用ArrayPool,Memory改造了下, ...

  6. JS逆向:【硬干货】手把手实战某条_signature参数破解(下)——WebSocket与JS函数

    本文仅供学习交流使用,请勿用于商业用途或不正当行为 如果侵犯到贵公司的隐私或权益,请联系我立即删除 前两篇文章: js逆向:[硬干货]手把手实战某条_signature参数破解(上) js逆向:[硬干 ...

  7. 网站升级Https后之前在http下的WebSocket出现链接失败的问题

    网站升级Https后之前在http下的WebSocket出现链接失败的问题 一.前端代码 var socket = new WebSocket('ws://192.168.2.110') 注意点: 1 ...

  8. 【Unity】在Unity下使用websocket的一些经验

    首先,先上大家都知道的简介,这一版是我认为比较清晰的...虽然在度娘的教导和知乎的教导下,总算认识了websocket,但这个过程比较艰辛,给大家发出来看一下: ------------------- ...

  9. websocket 学习--简单使用,nodejs搭建websocket服务器,到模拟股票,到实现聊天室

    websocket简介: WebSocket协议是 HTML5 开始提供的一种基于TCP的一种新的全双工通讯的网络通讯协议.它允许服务器主动发送信息给客户端. 和http协议的不同?? HTTP 协议 ...

最新文章

  1. 最全面的Unity游戏开发指南视频教程 第2卷
  2. ML之K-means:基于K-means算法利用电影数据集实现对top 100 电影进行文档分类
  3. angular cli 切换 css_漫谈 Angular 定制主题的四种方式
  4. java string 前缀匹配_字符串前缀和后缀匹配
  5. mysql抓包_mysql抓包工具
  6. mysql数据库 day02
  7. 设计模式之不简单的工厂模式(二)
  8. dubbo 分布式服务框架 介绍
  9. linux下配置tomcat(详细)
  10. Android 科大讯飞、语音听写集成指南
  11. 复制高亮代码到印象笔记
  12. winhex使用教程(详细版)
  13. 初识app之产品需求分析文档设计
  14. JavaSE基础——异常机制
  15. python之列表索引
  16. pikachu File Inclusion 文件包含漏洞 (皮卡丘漏洞平台通关系列)
  17. [转贴]国内计算机类学术期刊投稿指南
  18. java获取一天的起止时间
  19. 智策网的泸州止盈,行情的结束以放量信号而结束的
  20. 计算机操作实践的课程描述,计算机操作系统课程设计实践报告-Read.DOC

热门文章

  1. 多少 程序员珍藏 的 东东...
  2. 奔跑者阿甘:我就干活,别的顺其自然才是禅者的初心
  3. 同义词、近义词、反义词词典
  4. React Native Elements
  5. 人生,就是一路选择,一路坚持!
  6. mysql 的innoDB和NDB数据库引擎
  7. 黑马程序员——java的多线程
  8. zotero+坚果云实现同步
  9. 介绍家乡的html源代码_APICloud Studio3.0最新功能及使用流程介绍
  10. mysql事物日志工具,数据库事务日志 active