一、什么是Websocket技术
WebSocket是一种在单个TCP连接上进行全双工通信的网络协议。它有利于在WebSocket客户端和服务器之间进行实时和异步通信。WebSocket协议于2011年被IETF标准化。
由于Websocket具有双向通信、实时性、高效性、跨平台等特点,因此在现代化的web应用开发中被广泛应用。它与HTTP/HTTPS协议相比,可以节约开销,提高效率。在Websocket中,只有建立连接的时候需要发出HTTP请求,连接成功后,可以持续地传输数据,服务器也可以随时主动推送消息到客户端。WebSocket并没有提供新的发送消息的方式,仍然通过send方法发送消息。不过WebSocket的响应数据可以直接通过onmessage事件直接获取。
二、Websocket技术的实现方法
Websocket的实现是通过javascript提供的WebSocket对象来实现的,它需要在客户端与服务器端都设置。
1. 服务端实现
import asyncio import websockets async def hello(websocket, path): name = await websocket.recv() print(f" {greeting}") start_server = websockets.serve(hello, "localhost", 8765) asyncio.get_event_loop().run_until_complete(start_server) asyncio.get_event_loop().run_forever()
上面是一个简单的服务端实现,使用Python的websockets库实现。它监听8765端口,并接收客户端发来的消息并给予回复。
2. 客户端实现
//先创建一个WebSocket对象 var ws = new WebSocket("ws://localhost:8765/"); //连接打开时触发 ws.onopen = function(event){ console.log("WebSocket连接已打开..."); } //收到服务端消息时触发 ws.onmessage = function(event){ console.log("收到消息:" + event.data); } //连接关闭时触发 ws.onclose = function(event){ console.log("WebSocket连接已关闭..."); } //发生错误时触发 ws.onerror = function(event){ console.log("WebSocket连接发生错误..."); } //向服务端发送消息 ws.send("Hello Server!");
客户端实现也是通过javascript提供的WebSocket对象来实现的。在创建WebSocket对象时,需要指定服务端地址。发送和接收消息都通过WebSocket对象对应的方法实现。
三、Websocket的应用案例
1. 百度地图实时车辆监控系统
这是一个监控出租车位置的实时应用,用户在地图上点击任意区域,即可查看该区域内出租车的实时位置和车牌号。
该系统是基于Node.js实现的,使用了Socket.io实现Websocket通信。以每10s刷新一次数据,定位数据采集使用GPS定位或基站定位,数据实时推送给客户端显示。在使用方面,用户只需要在地图上点击相应的位置,后台即可实时推送最新的数据。
2. 在线聊天系统
在线聊天系统是最常见的Websocket应用之一。用户通过登录,在线聊天室内可以看到其他在线用户,并可以收、发消息。
聊天系统是不断推送信息,在Websocket中可以方便的实现,在不刷新的情况下还可以实现数据实时推送,做到接近异步的真正实时通信。这也是使用Websocket的优势所在。
3. 协作工具
协作工具的特点是多人协作编辑,对实时性的要求比较高。目前的协作工具有文档、画图、PPT等。它们都需要实时同步用户的操作,Websocket可以非常好的解决这个问题。
Websocket可以实时推送用户的操作,比如用户在画图时新建了一条线路或者添加了文字,这些动作可以通过Websocket实时地推送给其他用户进行展示和操作。在线协作工具带来了便捷性,让各地用户可以即时交换、共同编辑和合作。
原创文章,作者:PBEX,如若转载,请注明出处:https://www.506064.com/n/134406.html