Python中的Websocket程式設計

PHPz
發布: 2023-06-17 08:07:15
原創
5422 人瀏覽過

隨著網際網路的快速發展,Websocket協定作為一種新的通訊協定也被廣泛運用。 Python 作為一種常見的程式語言,有著許多優秀的Websocket程式庫,如Tornado和WebSocket-Server等,為開發者提供了很好的支援。

本文將介紹Websocket協定及其與HTTP協定的區別,以及利用Python開發Websocket應用程式的步驟和實作方法。

一、Websocket協定簡介

Websocket協定是一種在TCP協定之上運作的、全雙工通訊的協定。該協定提供了一個持久化連接,使得客戶端和伺服器之間可以進行即時的雙向資料傳輸,可以用於即時通訊、線上遊戲等場景。

Websocket協定的特點如下:

(1)所有資料傳輸都是基於幀(Frame)的方式。

(2)Websocket協定在握手階段使用HTTP協定。

(3)Websocket協定提供了兩種幀:資料幀和控制幀。資料幀用於傳輸訊息,控制幀用於維護連接狀態。

(4)Websocket協定提供了一種心跳機制,可以保持連線的穩定性。

(5)Websocket協定可以透過加密SSL/TLS和非加密方式進行通訊。

二、Websocket協定與HTTP協定的差異

Websocket協定和HTTP協定都是應用層協定,但它們之間有以下幾個主要的區別:

(1)Websocket是一種持久化連接,而HTTP是一種短連接。

(2)Websocket協定在握手階段會使用HTTP協定進行通信,但Websocket握手階段只需進行一次,之後便可以進行即時的資料通訊。

(3)Websocket協定採用二進位訊框和文字訊框進行資料傳輸,而HTTP協定只能傳輸文字資料。

(4)Websocket協定可以進行雙向資料傳輸,而HTTP協定只能進行單向資料傳輸。

三、Python實作Websocket應用

Python中有很多Websocket函式庫,其中較常用的是Tornado和WebSocket-Server。本文將以WebSocket-Server為例,介紹如何用Python實作Websocket應用。

  1. 安裝WebSocket-Server函式庫

在命令列中輸入以下指令即可安裝WebSocket-Server函式庫:

pip install websocket-server
登入後複製
  1. #編寫伺服器程式碼

在Python中實作Websocket伺服器,需要先建立一個WebsocketServer對象,然後重載它的幾個事件方法,如on_open()、on_message()、on_close()等,完成資料連線、資料接收和關閉連線等操作。

具體程式碼如下:

from websocket_server import WebsocketServer

# 客户端连接时触发
def new_client(client, server):
    print("New client connected and was given id %d" % client["id"])
    server.send_message_to_all("Hey all, a new client has joined us")

# 接收到客户端消息时触发
def message_received(client, server, message):
    print("Client(%d) said: %s" % (client["id"], message))
    server.send_message_to_all("Client(%d) said: %s" % (client["id"], message))

# 客户端关闭连接时触发
def client_left(client, server):
    print("Client(%d) disconnected" % client["id"])

# 建立 WebSocketServer 对象,监听 9001 端口
server = WebsocketServer(9001)
server.set_fn_new_client(new_client)
server.set_fn_message_received(message_received)
server.set_fn_client_left(client_left)

# 启动服务器
server.run_forever()
登入後複製
  1. 執行Websocket伺服器

在命令列中輸入以下指令即可啟動WebSocket伺服器:

python server.py
登入後複製
  1. 編寫客戶端程式碼

在Python中實作Websocket客戶端,需要建立一個WebSocketClient對象,然後呼叫它的幾個方法,如connect()、send()、close ()等,完成連線、資料傳送及關閉操作。

具體程式碼如下:

from websocket import create_connection

# 建立 WebSocket 连接
ws = create_connection("ws://localhost:9001/")

# 发送消息
ws.send("Hello, world!")

# 接收消息
result = ws.recv()
print("Received '%s'" % result)

# 关闭 WebSocket 连接
ws.close()
登入後複製

以上就是Python中的Websocket程式設計的步驟和實作方法,透過這種方式可以實現即時通訊和線上遊戲等應用。當然,除了WebSocket-Server庫之外,還有其他不同的Websocket庫可供選擇,開發者可以根據自己的需求進行選擇和嘗試。

以上是Python中的Websocket程式設計的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板