首頁 > 後端開發 > Python教學 > Python伺服器程式設計:實作WebSocket服務端

Python伺服器程式設計:實作WebSocket服務端

WBOY
發布: 2023-06-19 09:51:10
原創
4961 人瀏覽過

近年來,WebSocket 技術日漸流行,成為了瀏覽器與伺服器之間進行即時通訊的標準選擇。在 Python 中,我們可以透過一些成熟的函式庫來實現 WebSocket 服務端的開發。本文將在介紹 WebSocket 技術的基礎上,探討如何利用 Python 開發 WebSocket 服務端。

一、什麼是WebSocket

WebSocket 是一種在單一TCP 連接上進行全雙工通訊的協議,即在客戶端與伺服器端之間可以實現即時通信,而不需要為每一則通訊新開一個HTTP 連線。 WebSocket 在常見的即時通訊場景下,如聊天室、網頁遊戲、資料視覺化等方面均擁有廣泛的應用。

在 WebSocket 協定中,客戶端與服務端的通訊都是透過「幀」(Frame)來完成的。幀是 WebSocket 中資料傳輸的基本單位,由「控制幀」和「資料幀」兩種構成。控制幀用於控制資訊互動的流程,如握手等操作;資料幀則用於傳遞具體的資料內容。

WebSocket 的一個優點是僅使用一個單一的 TCP 套接字來允許客戶端和伺服器進行雙向通信, 避免了多次 HTTP 連接和關閉的問題,降低了通信時的延遲。

二、 Python 開發WebSocket 服務端

Python 生態中有一些優秀的第三方開源程式庫可以用來實現WebSocket 服務端,例如:Tornado、Twisted、aiohttp、Sanic 等,其中Tornado 和Twisted 都屬於Python 的網路程式設計傳統利器,用Python 開發WebSocket 服務端時都是不二之選。

在下文中,我們將以 Tornado 為例介紹 Python 開發 WebSocket 服務端的特定實作方法。

首先,需要安裝 Tornado 函式庫,可以透過 pip install tornado 指令進行安裝。

接著,我們基於 Tornado 建立 WebSocket服務端,程式碼如下:

import tornado.websocket
import tornado.httpserver
import tornado.ioloop
import tornado.web

class WebSocketHandler(tornado.websocket.WebSocketHandler):
    def open(self):
        print("WebSocket opened")

    def on_message(self, message):
        print("Message received: {}".format(message))
        self.write_message("You said: " + message)

    def on_close(self):
        print("WebSocket closed")

    def check_origin(self, origin):
        return True

app = tornado.web.Application([(r"/websocket", WebSocketHandler)])
server = tornado.httpserver.HTTPServer(app)
server.listen(8000)
tornado.ioloop.IOLoop.instance().start()
登入後複製

上述程式碼定義了一個 WebSocketHandler 類,實現了 WebSocket 服務端的開啟、訊息接收和關閉等操作。其中,open() 方法在 WebSocket 連線建立後被調用,on_message() 方法在 WebSocket 傳輸過程中接收到訊息時被調用,on_close() 方法在 WebSocket 連線關閉時被調用。

check_origin() 方法用於跨域請求的配置,本例中我們對所有 origin 進行了允許。在 WebSocketHandler 類別中,我們同時進行了 HTTPRequest 和 WebSocketRequest 請求處理,所以需要將 WebSocketHandler 類別透過 app 進行註冊,同時指定監聽連接埠為 8000。

最後,透過 IOLoop 進行監聽並處理連線請求。

執行此程式碼後,即可啟動 WebSocket 服務端,在瀏覽器輸入 localhost:8000/websocket 進行連線測試。

三、結語

本文介紹了WebSocket 技術的原理及Python 實作方法,在Python 中我們可以用Tornado 實作WebSocket 服務端,利用WebSocket 技術,我們可以方便地將即時通訊功能添加到各種Web 應用程式中。如果你現在正在使用 Python 開發 Web 應用程序,並希望使用 WebSocket 實現即時通訊功能,那麼 Tornado 就是一個不錯的選擇。

以上是Python伺服器程式設計:實作WebSocket服務端的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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