五分钟学会HTML5的WebSocket协议
WebSocket是HTML5协议之一,用于在网络应用中进行实时双向通信。它和HTTP协议不同,可以在一条TCP连接上实现双向通信,显著提升了网络应用的性能和效率。
1. WebSocket的基础知识
1.1 WebSocket的URL格式
WebSocket的URL格式与HTTP协议基本相同,只是在http
或https
后面加上ws
或wss
。例如:
- ws://example.com/path/to/resource
- wss://example.com/path/to/resource
1.2 WebSocket的API
在JavaScript中,可以通过WebSocket
对象来创建WebSocket连接。API如下:
var socket = new WebSocket(url, protocols);
其中,url
是WebSocket服务的URL,protocols
是协议数组,用于指定可接受的子协议。WebSocket
对象的属性和方法如下:
readyState
:连接状态,取值为四个常量:WebSocket.CONNECTING
,WebSocket.OPEN
,WebSocket.CLOSING
和WebSocket.CLOSED
。onopen
:连接成功后的回调函数。onmessage
:接收到消息时的回调函数。onerror
:连接出错时的回调函数。onclose
:连接关闭后的回调函数。send(data)
:发送数据。
2. WebSocket的实例
下面的示例演示了如何创建WebSocket连接,并实现基本的通信功能。
2.1 服务端代码
使用Python的websocket
模块来实现WebSocket服务端。安装该模块的命令为:
pip install websocket
服务端代码如下:
import websocket
import threading
import time
def on_message(ws, message):
print('Received: ' + message)
def on_error(ws, error):
print('Error: ' + str(error))
def on_close(ws):
print('Connection closed')
def on_open(ws):
def run():
for i in range(3):
time.sleep(1)
ws.send('Hello %d' % i)
time.sleep(1)
ws.close()
print('Thread terminating...')
threading.Thread(target=run).start()
websocket.enableTrace(True)
ws = websocket.WebSocketApp('ws://localhost:8000/',
on_message=on_message,
on_error=on_error,
on_close=on_close)
ws.on_open = on_open
ws.run_forever()
2.2 客户端代码
使用JavaScript来实现WebSocket客户端。代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>WebSocket示例</title>
<script type="text/javascript">
var ws = new WebSocket('ws://localhost:8000/');
ws.onopen = function(evt) {
console.log('Connection open ...');
};
ws.onmessage = function(evt) {
console.log('Received Message: ' + evt.data);
};
ws.onclose = function(evt) {
console.log('Connection closed.');
};
</script>
</head>
<body>
<h1>WebSocket示例</h1>
<p>请打开浏览器控制台查看调试信息</p>
</body>
</html>
将以上两份代码放在同一目录下,运行Python服务端,再打开浏览器访问客户端,即可看到WebSocket的通信过程。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:五分钟学会HTML5的WebSocket协议 - Python技术站