网站首页 > 技术文章 正文
前言:
websoket是一个通信协议,本质上基于TCP协议,传统http协议有个弊端,就是客户端发起,服务端响应,一问一答式,在需要实时通信的场景下http请求就显得有些低效,在这时候可以使用websoket,只需客户端与服务端建立一次连接,服务端就可以主动向客户端推送消息。
与服务端实时通信方式:
1.ajax轮询
以一定频率通过ajax请求服务器
2.Long Polling长轮询
客户端发送请求至服务器,服务器若没有返回信息则挂起当前请求,等有返回信息时会将信息返回至客户端,同时关闭当前请求。客户端收到服务端返回的信息后会立即发起下一次请求。
3.websoket
客户端向服务器发起一个http请求,这个请求中附带了个头信息,告诉服务端这是一个申请协议升级的请求。服务端解析附加的头信息,然后将应答信息返回给客户端,客户端与服务端的链接就建立起来了,双方都可主动向另一方推送消息。
websoket实战 (nodejs-websocket)
1.安装依赖模块
npm install nodejs-websocket --save
2.nodejs创建websoket服务
//引入依赖模块
var ws = require("nodejs-websocket");
//创建一个websoket服务
var server = ws
.createServer(function (socket) {
//监听文本消息
socket.on("text", function (str) {
//发送消息给客户端
socket.sendText(`我是服务器,我已经收到了你发的消息。---【${str}】`);
});
})
.listen(3000);
3.客户端相关代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
//创建一个websoket连接至本地服务端
var ws = new WebSocket('ws://localhost:3000/');
//打开链接
ws.onopen = function() {
//每秒向服务器发送一个文本消息
setInterval(function() {
ws.send('你好,服务端');
}, 1000);
}
//监听接收到的消息
ws.onmessage = function(e) {
console.log(e.data)
}
</script>
</head>
<body>
</body>
</html>
结尾:
本文是websoket的一个简单介绍,大致流程就是客户端与服务端建立一次连接,然后客户端监听服务端发过来的消息,通过操作dom,显示到当前页面,websoket主要用于实时通信im、聊天室等,如果各位项目中有需要使用可以参阅详细文档。
猜你喜欢
- 2025-06-30 跨标签页通信(五):IndexedDB(跨标签页通讯)
- 2025-06-30 Netty是如何一步一步演化而来的,不断进化成就Netty
- 2025-06-30 React 官方为何坚持推出反常规的RSC组件?
- 2025-06-30 "前端开发者不可错过的技能:SSE流式传输助力实时数据更新!"
- 2025-06-30 让 React 代码行数减少78%的 htmlx 有这么神?
- 2025-06-30 前端开发进阶:前端开发中如何高效渲染大数据量?
- 2025-06-30 实现前端工程师的第一个AI应用(前端之父是谁)
- 2025-06-30 nginx服务器负载均衡配置(nginx负载均衡配置详解)
- 2025-06-30 前端定时任务的神库!快把它加到你的项目中去!
- 2025-06-30 自己个人拥有一个可以支付功能的网站?当然可以了!保姆级演示!
你 发表评论:
欢迎- 577℃几个Oracle空值处理函数 oracle处理null值的函数
- 573℃Oracle分析函数之Lag和Lead()使用
- 559℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 558℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 554℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 543℃【数据统计分析】详解Oracle分组函数之CUBE
- 531℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 527℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)