首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WebSocket

WebSocket是一种在单个TCP连接上进行全双工通信的协议(客户端可以给服务端发送,反之服务端也可以给客户端发送),很多网站为了实现推送技术,所用的技术都是轮询。轮询是在特定的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。

WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。以下用代码实例来说明:

//jsconst ws=new WebSocket("ws://localhost:8081/sock") ws.onopen=()=>{ console.log("connecting") ws.send("hello") } ws.onmessage=(e)=>{ console.log("get",e,e.data) }

使用node开启一个服务,先初始化然后创建:

npm init -ynpm install express --save //安装expressnpm install ws --save //安装websocket

安装好的package.josn如下:

{ "name": "serve", "version": "1.0.0", "description": "", "type": "module", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node index.js" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "cors": "^2.8.5", "express": "^4.18.2", "ws": "^8.14.2" }}

开启一个服务

import express from "express"import cors from "cors";import http from "http";import {WebSocketServer} from "ws"var app = express(); // app.use(cors()) //解决跨域 const server=http.createServer(app) const wss=new WebSocketServer({server}) wss.on('connection',(ws)=>{ console.log("conn") ws.send("hello ws") setInterval(()=>{ ws.send("数据变化"+new Date()) },1000) ws.on('message',(message)=>{ console.log('client'+message); }) }) app.get('/', function (req, res) { res.send('Hello World');}) app.get("/sock",(req,res)=>{ res.send(new Date()) }) server.listen(8081)

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OVNTmzZozbdM0UlQ0R9978GQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券