WebSocket & websockets

https://en.wikipedia.org/wiki/WebSocket

https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API
https://developer.mozilla.org/en-US/docs/Web/API/WebSocket

构建网络应用的过程中,我们经常需要与服务器进行持续的通讯以保持双方信息的同步。
通常这种持久通讯在不刷新页面的情况下进行,消耗一定的内存资源常驻后台,并且对于用户不可见。

https://caniuse.com/#feat=websockets

https://html.spec.whatwg.org/multipage/comms.html#network

传统轮询 (Traditional Polling)


长轮询 (Long Polling)


服务器发送事件 (Server-Sent Event)

SSE只支持服务器到客户端单向的事件推送.


https://segmentfault.com/a/1190000012948613

https://github.com/Pines-Cheng/share

https://en.wikipedia.org/wiki/Push_technology

http://www.ruanyifeng.com/blog/2017/05/websocket.html

https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket

https://segmentfault.com/a/1190000012709475#articleHeader20


demo

    // todo..."use strict";/**** @author xgqfrms* @license MIT* @copyright xgqfrms** @description WS server & node.js * @augments* @example**/const WebSocket = require('ws');const wss = new WebSocket.Server({// host: "",// path: "",port: 8888
});let counter = 1;wss.on('connection', function (ws, req) {console.log("client connected", counter);counter ++;ws.on("message", function (msg) {console.log(`receive message = `, msg);if (ws.readyState === 1) {const json = {"success": true,"message": null,"data": [{"pro_name": "otc","pro_instructions": null,"pro_type_name": "front-end","send_time": null,"incre": true,},{"pro_name": "ds","pro_instructions": null,"pro_type_name": "back-end","send_time": null,"incre": false}]};// const json = {//     success: true,//     message: "success",//     data: []// };let datas = JSON.stringify(json);// return json datas;ws.send(datas);// ws.send("server returned message!");}});let ip = req.connection.remoteAddress;console.log(`ip =`, ip);
});

full demo

OK

server


"use strict";/**** @author xgqfrms* @license MIT* @copyright xgqfrms** @description WS* @augments* @example**/// const WSGenerator = (datas = [], debug = false) => {
//     let result = ``;
//     // do something...
//     return result;
// };// export default WS;// export {
//     WS,
// };const WebSocket = require('ws');const wss = new WebSocket.Server({// host: "",// path: "",port: 8888
});let counter = 1;wss.on('connection', function (ws, req) {console.log("client connected", counter);counter ++;ws.on("message", function (msg) {console.log(`receive message = `, msg);if (ws.readyState === 1) {const json = {"success": true,"message": null,"data": [{"pro_name": "otc","pro_instructions": null,"pro_type_name": "front-end","send_time": null,"incre": true,},{"pro_name": "ds","pro_instructions": null,"pro_type_name": "back-end","send_time": null,"incre": false}]};// const json = {//     success: true,//     message: "success",//     data: []// };let datas = JSON.stringify(json);// return json datas;ws.send(datas);// ws.send("server returned message!");}});let ip = req.connection.remoteAddress;console.log(`ip =`, ip);
});

client


"use strict";/**** @author xgqfrms* @license MIT* @copyright xgqfrms** @description WS* @augments* @example**/// const WS = (datas = [], debug = false) => {
//     let result = ``;
//     // do something...
//     return result;
// };// export default WS;// export {
//     WS,
// };const url = `ws://10.1.64.138:8888/F10_APP/src/test`;
let ws = new WebSocket(url);ws.onopen = function(e) {console.log(`已经建立连接 open`, ws.readyState);console.log(`e = `, e);
};ws.onerror = function(e) {console.log(`连接异常 error`, ws.readyState);console.log(`e = `, e);
};ws.onmessage = function(res) {console.log(`收到消息 message`, ws.readyState);let data = res.data,origin = res.origin;console.log(`res & e = `, res);console.log(`res.data = `, res.data);console.log(`res.origin = `, res.origin);
};ws.onclose = function(e) {console.log(`已经关闭连接 close`, ws.readyState);console.log(`e = `, e);
};setTimeout(() => {ws.onopen = function(e) {console.log(`已经建立连接 open`, ws.readyState);console.log(`e = `, e);};
}, 1000 * 1);

转载于:https://www.cnblogs.com/xgqfrms/p/9102179.html

WebSocket websockets相关推荐

  1. 【Web安全】先进技术WebSocket下安全测试

    什么是WebSocket WebSockets 是一种先进的技术.它可以在用户的浏览器和服务器之间打开交互式通信会话.允许浏览器和服务器建立单个TCP连接然后进行全双工异步通信.允许实时更新,浏览器也 ...

  2. springboot心跳检测_springboot websocket 实时刷新 添加心跳机制(亲测可用版)

    思路 在我之前的一篇文章当中写到了websocket的实时刷新,但是有个问题没有解决,就是长时间没有数据的时候,这个连接就会自动断开,然后再次进行连接的话,需要再次进行连接.如果加入心跳机制的话,10 ...

  3. springboot + vue_Springboot+VUE---实现简单的websocket

    什么是websocket WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议. WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主 ...

  4. JeecgBoot关于websocket的改进方案

    1.环境描述 JeecgBoot3.0 2.websocket权限认证 在shiroConfig.java代码中注释掉 filterChainDefinitionMap.put("/webs ...

  5. springboot整合webSocket(看完即入门)

    webSocket 1.什么是webSocket? 2.webSocket可以用来做什么? 3.webSocket协议 4.服务端 WebSocket操作类 5.客户端 1.什么是webSocket? ...

  6. Spring clound+VUE+WebSocket实现消息推送 一(即时通讯)

    需求: 当用户进行某个操作,需要通知其他用户时,其他用户可以实时接收消息. 工程为 Spring cloud + VUE . 技术实现: Spring Cloud.Spring boot.vue.we ...

  7. WebSocket创建局域网在线聊天室

    WebSocket的简要介绍: WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议. WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服 ...

  8. WebSocket实现简单聊天功能案例

    简介 1.使用WebSocket实现的一个简单的聊天功能业务 2.使用了SpringBoot的ApplicationEvent事件监听用来与业务解耦 3.需要注意的是websocket的长连接默认会在 ...

  9. Web API 接口-JavaScript全部api接口文档

    当使用JavaScript编写网页代码时,有很多API可以使用.以下是所有对象.类型等接口的列表,你在开发网页应用程序或站点时使用它们. API文档地址:https://developer.mozil ...

  10. php reactphp wss_Node和React中如何进行实时通信?

    Web 为了支持客户端和服务器之间的全双工(或双向)通信已经走过了很长的路.这是 WebSocket 协议的主要目的:通过单个 TCP 套接字连接在客户端和服务器之间提供持久的实时通信. WebSoc ...

最新文章

  1. 【Pyhon 3】: 170104:优品课堂: GUI -tkinter
  2. 如何使用 Python 隐藏图像中的数据
  3. 小型蜂鸣器内部驱动电路
  4. ansible role中常代码块
  5. java序列化异常_Java|序列化异常StreamCorruptedException的解决方法
  6. 基于CDN边缘网络智能优化图片和视频
  7. 用过 mongodb 吧, 这三个大坑踩过吗?
  8. 在JDK 9中将InputStream传输到OutputStream
  9. DevOps实战 —— 如何高效地远程部署?自动化运维利器 Fabric 教程
  10. 【不体系】布谷鸟过滤器
  11. 关于C#中的DLLImport
  12. Oracle10g 如何给scott用户解锁
  13. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_21-页面静态化-静态化测试-静态化程序编写...
  14. python set类型
  15. http协议及基于http协议的文件下载
  16. 中企海外周报 | 哈弗F7x性能版在俄罗斯上市;徐工首家海外银行落户巴西
  17. tp5 获取当前的url方法
  18. 【地平线开发板 模型转换】将pytorch生成的onnx模型转换成.bin模型
  19. 基于OHCI的USB主机——UFI查询命令(Inquiry)
  20. 访问 IIS 元数据库失败(转)

热门文章

  1. (14)机器学习_f1,auc值
  2. JAVA程序将PDF转化为TXT
  3. jQuery学习笔记01
  4. python导入上级目录的模块
  5. 为什么是GCN(转)
  6. Python 基于项目自动生成 requirements.txt 文件
  7. 制作小游戏贪吃蛇即解决将python制作成exe
  8. 2021-07-31mysql 登录退出
  9. 登录服务器信息怎么删除,服务器端删除了用户,怎么通知客户端浏览器删除cookie...
  10. uniapp 移动端上传文件_移动端上传头像并裁剪 - Clipic.js