websocket 协议 使用
1、websocket简介
websocket最主要特点是:服务器可以主动给浏览器发送消息,而不是被动接收浏览器请求。
websock协议可以参考:http://www.ruanyifeng.com/blog/2017/05/websocket.html
WebSocket 使用ws或wss协议(非http协议),Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说。WebSocket API最伟大之处在于服务器和客户端可以在给定的时间范围内的任意时刻,相互推送信息。WebSocket并不限于以Ajax(或XHR)方式通信,因为Ajax技术需要客户端发起请求,而WebSocket服务器和客户端可以彼此相互推送信息;XHR受到域的限制,而WebSocket允许跨域通信。
2、实现代码
(1)websocket.js
- let websock;
- // 持续连接
- function connection(wsuri) {
- websock = new WebSocket(wsuri);
- // 建立连接
- websock.onopen = function(e) {
- console.log('收到服务器握手包.');
- setInterval(function() {
- let agentData = {'name': 'ping', 'message': 'message'}
- websocketsend(agentData)
- }, 30000)
- }
- // 断开连接
- websock.onclose = function(e) {
- console.log('和服务器断开连接! (' + e.code + ')');
- }
- // 连接发生错误
- websock.onerror = function() {
- console.log('websock连接发生错误');
- }
- }
- // 业务代码发送数据
- function sendSock(agentData) {
- console.log('agentData', agentData)
- // 链接成功,可以通信
- if (websock.readyState === websock.OPEN) {
- websocketsend(agentData);
- } else if (websock.readyState === websock.CONNECTING) {
- // 若是正在链接,则等待1s后重新调用
- setTimeout(function() {
- sendSock(agentData);
- }, 1000);
- } else {
- // 若未开启 ,则等待1s后重新调用
- setTimeout(function() {
- sendSock(agentData);
- }, 1000);
- }
- }
- // 数据发送
- function websocketsend(agentData) {
- websock.send(JSON.stringify(agentData));
- }
- export {connection, sendSock, websock}
(2)业务代码
- //注意修改路径
- import * as websocket from 'websocket.js'
- //vue mounted时挂在websocket
- mounted() {
- websocket.connection(yourUrl)
- // onmessage 用于指定收到服务器数据后的回调函数。
- websocket.websock.onmessage = (e) => {
- //业务处理
- }
- }
- methods:{
- handleEvent() {
- //发送数据
- websocket.sendSock(yourParams)}
- }
(3)websockt需要服务端配置好服务。
websocket 协议 使用的更多相关文章
- Websocket 协议解析
WebSocket protocol 是HTML5一种新的协议.它是实现了浏览器与服务器全双工通信(full-duplex). 现 很多网站为了实现即时通讯,所用的技术都是轮询(po ...
- WebSocket协议开发
一直以来,网络在很大程度上都是围绕着HTTP的请求/响应模式而构建的.客户端加载一个网页,然后直到用户点击下一页之前,什么都不会发生.在2005年左右,Ajax开始让网络变得更加动态了.但所有的HTT ...
- 初识WebSocket协议
1.什么是WebSocket协议 RFC6455文档的表述如下: The WebSocket Protocol enables two-way communication between a clie ...
- Websocket协议的学习、调研和实现
本文章同时发在 cpper.info. 1. websocket是什么 Websocket是html5提出的一个协议规范,参考rfc6455. websocket约定了一个通信的规范,通过一个握手的机 ...
- python测试基于websocket协议的即时通讯接口
随着html5的广泛应用,基于websocket协议的即时通讯有了越来越多的使用场景,本文使用python中的websocket-client模块来做相关的接口测试 import webclient ...
- Websocket协议之php实现
前面学习了HTML5中websocket的握手协议.打开和关闭连接等基础内容,最近用php实现了与浏览器websocket的双向通信.在学习概念的时候觉得看懂了的内容,真正在实践过程中还是会遇到各种问 ...
- Websocket协议数据帧传输和关闭连接
之前总结了关于Websocket协议的握手连接方式等其他细节,现在对socket连接建立后的数据帧传输和关闭细节总结. 一.数据帧格式 数据传输使用的是一系列数据帧,出于安全考虑和避免网络截获,客户端 ...
- Websocket协议之握手连接
Websocket协议是为了解决web即时应用中服务器与客户端浏览器全双工通信的问题而设计的,是完全意义上的Web应用端的双向通信技术,可以取代之前使用半双工HTTP协议而模拟全双工通信,同时克服了带 ...
- WebSocket协议
websocket 简介 (2013-04-09 15:39:28) 转载▼ 分类: websocket 一 WebSocket是html5新增加的一种通信协议,目前流行的浏览器都支持这个协议,例 ...
- Jmeter实现WebSocket协议的接口和性能测试方法
WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex). 浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一 ...
随机推荐
- 51nod1648 洞 LCT
非常简单的一眼LCT,然而我没有在20min内码完,太失败了... 第一问,直接查根的前驱 第二问,查链的子树大小 复杂度$O((n + m) log n)$ #include <cstdio& ...
- Centos 右上角面板里没有wired network图标的问题
开了很多的网页查看解决这个问题,都不是很有效,最后很简单的改了下一个文件就ok了,自己记录下,以免忘记! 打入命令:sudo gedit /etc/NetworkManager/nm-system-s ...
- JavaScript设计模式与开发实践——读书笔记1.高阶函数(上)
说来惭愧,4个多月未更新了.4月份以后就开始忙起来了,论文.毕设.毕业旅行等七七八八的事情占据了很多时间,毕业之后开始忙碌的工作,这期间一直想写博客,但是一直没能静下心写.这段时间在看<Java ...
- input输入框限制输入英文,数字,汉字
<h1>js验证输入框内容</h1><br /><br /> 只能输入英文<input type="text" onkeyup ...
- CentOS6 下编译安装 MySQL 5.6.26
CentOS6下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.26. 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | ...
- Django Pagination
Django provides a few classes that help you manage paginated data – that is, data that’s split acros ...
- POJ 3237 Tree (树链剖分)
Tree Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 2825 Accepted: 769 Description ...
- HDU 1171 Big Event in HDU (多重背包变形)
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 源码管理--llorch的Visual Studio基本教程(四)
通用的演示样例说明: 本系列博客仅仅讨论工具的基础,不讨论不论什么语言. 甚至不讨论快捷键:-) 能够用鼠标就完毕本教程 IDE默认指代的是Visual Studio 2013 Community E ...
- linux上SVN解决冲突的办法
转载:http://www.aixchina.net/club/thread-25902-1-1.html 这里,先说说冲突解决. 怎么会发生冲突呢? 两个人修改了不同文件?不会有冲突,他们不相关. ...