webSocket使用(前端)

webSocket使用

一、概念

定义

WebSocket是html5提供的一种在单个TCP连接上进行双向通信的协议,解决了客户端和服务端之间的实时通信问题。浏览器和服务器只需完成一次握手,两者之间就可以创建一个持久性的TCP连接,此后服务器和客户端通过此TCP连接进行双向实时通信。举个栗子:现在需要根据用户不同的输入来获取后端不同的数据,http请求的方式就是每次用户输入我就发送一个http请求。然而websocket的解决是一次连接成功后,每次用户输入都会发送给后台,但是这个发送的数据却是一直处在已经连接的状态,并不是每次想http每一次都是一次新的连接。

优点

为了实现数据推送,一般所用的技术都是ajax轮询。轮询是在特定的时间间隔,由浏览器主动发起请求,将服务器的数据拉回来。轮询需要不断的向服务器发送请求,会占用很多带宽和服务器资源。WebSocket建立TCP连接后,服务器可以主动给客户端传递数据,能够更好的节省服务器资源和带宽,实现更实时的数据通讯。

传统的HTTP请求
传统的HTTP请求
webSocket请求
在这里插入图片描述

二、webSocket用法

	//申请一个WebSocket对象,参数是服务端地址,同http协议使用http://开头一样,WebSocket协议的url使用ws://开头,另外安全的WebSocket协议使用wss://开头
	var wsUrl = "ws://192.168.00.01:8888/xxx/xxxx";
  	const ws = new WebSocket(wsUrl); 

	ws.onopen = function(){
  		//当WebSocket创建成功时,触发onopen事件
   		console.log("open");
  		ws.send("hello"); //将消息发送到服务端
	}
	ws.onmessage = function(e){
  		//当客户端收到服务端发来的消息时,触发onmessage事件,参数e.data包含server传递过来的数据
  		console.log(e.data);
	}
	ws.onclose = function(e){
  		//当客户端收到服务端发送的关闭连接请求时,触发onclose事件
  		console.log("close");
	}
	ws.onerror = function(e){
  		//如果出现连接、处理、接收、发送数据失败的时候触发onerror事件
  		console.log(error);
	}

### 使用Python WebSocket服务器与前端JavaScript WebSocket客户端交互 #### 创建WebSocket服务器 为了创建一个WebSocket服务器,可以利用`websockets`库。此库简化了通过WebSocket协议进行网络通信的过程。 ```python import asyncio import websockets async def echo(websocket, path): async for message in websocket: await websocket.send(f"Echo: {message}") start_server = websockets.serve(echo, "localhost", 8765) asyncio.get_event_loop().run_until_complete(start_server) print("Server started on ws://localhost:8765") asyncio.get_event_loop().run_forever() ``` 这段代码定义了一个简单的回声服务器,它会接收到的消息再发回去给客户端[^1]。 #### 构建HTML页面作为WebSocket客户端 对于前端部分,可以通过纯HTML和JavaScript来构建一个简易的网页应用,该应用能够连接至上述启动的服务端并交换信息。 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>WebSocket Test</title> <script type="text/javascript"> document.addEventListener('DOMContentLoaded', (event) => { const socket = new WebSocket('ws://localhost:8765'); socket.onopen = () => { console.log('Connection established'); // Send a test message to the server upon connection. socket.send('Hello Server!'); }; socket.onmessage = ({ data }) => { console.log(`Message received from server: ${data}`); }; socket.onerror = error => { console.error(`WebSocket error observed:`, error); } }); </script> </head> <body> <h1>WebSocket Example Page</h1> <p id="status">Connecting...</p> </body> </html> ``` 当文档加载完成之后,尝试建立与本地运行中的WebSocket服务器之间的链接,并发送一条测试消息;一旦收到来自服务器的信息,则将其打印出来显示在控制台上[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值