python實(shí)現(xiàn)WebSocket服務(wù)端過(guò)程解析
一種類(lèi)似Flask開(kāi)發(fā)的WebSocket-Server服務(wù)端框架,適用python3.X
1、安裝模塊Pywss
pip install pywss
2、搭建簡(jiǎn)易服務(wù)器
2.1 服務(wù)端代碼
代碼簡(jiǎn)介
route: 注冊(cè)請(qǐng)求路徑
example_1(request, data):
request: socket句柄,能夠發(fā)送和接收數(shù)據(jù)接。發(fā)送數(shù)據(jù)request.ws.send(data),收數(shù)據(jù)request.ws_recv(1024)
data: 客戶端發(fā)送的數(shù)據(jù)存于此處
from pywss import Pyws, route
@route('/test/example/1')
def example_1(request, data):
return data + ' - data from pywss'
if __name__ == '__main__':
ws = Pyws(__name__, address='127.0.0.1', port=8866)
ws.serve_forever()
2.2 客戶端代碼
客戶端代碼,建議直接在瀏覽器中運(yùn)行,eg: Chorme打開(kāi)新標(biāo)簽 -> F12 -> console
代碼簡(jiǎn)介
WebSocket(ws_url): 發(fā)起協(xié)議升級(jí)為WebSocket連接請(qǐng)求,ws_url路徑不要寫(xiě)錯(cuò)咯,要與服務(wù)端中的route()中注冊(cè)路徑對(duì)應(yīng)起來(lái)
ws.onmessage: 當(dāng)有數(shù)據(jù)傳遞過(guò)來(lái)時(shí),會(huì)執(zhí)行此函數(shù)
ws.onclose: 當(dāng)連接斷開(kāi)時(shí),會(huì)執(zhí)行此函數(shù)
ws.onopen: 當(dāng)連接建立的時(shí)候,會(huì)執(zhí)行此函數(shù)
ws = new WebSocket("ws://127.0.0.1:8866/test/example/1");
ws.onmessage = function (ev) {
console.log(JSON.parse(ev.data));
}
ws.onclose = function (ev) {
console.log('Connect Closed')
}
ws.onopen = function() {
if (ws.readyState === WebSocket.OPEN) {
ws.send('hello, pywss!') // you will get 'hello, pywss! - data from pywss'
}
}
運(yùn)行截圖:
服務(wù)端:

客戶端:

github中還有5個(gè)例子,項(xiàng)目地址: https://github.com/CzaOrz/Pywss
如果覺(jué)得還不錯(cuò),不妨give me start~鼓勵(lì)下這個(gè)小碼農(nóng)QAQ
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python Websocket服務(wù)端通信的使用示例
- Python通過(guò)websocket與js客戶端通信示例分析
- 使用python構(gòu)建WebSocket客戶端的教程詳解
- 詳解python websocket獲取實(shí)時(shí)數(shù)據(jù)的幾種常見(jiàn)鏈接方式
- python實(shí)現(xiàn)websocket的客戶端壓力測(cè)試
- Python如何爬取實(shí)時(shí)變化的WebSocket數(shù)據(jù)的方法
- python制作websocket服務(wù)器實(shí)例分享
- Python 實(shí)現(xiàn) WebSocket 通信的過(guò)程詳解
相關(guān)文章
解決Python調(diào)用df.to_csv()出現(xiàn)中文亂碼的問(wèn)題
在Python使用df.to_csv()時(shí),若出現(xiàn)中文亂碼,可通過(guò)加入?yún)?shù)encoding="utf_8_sig"解決,"utf-8"編碼不包含BOM,直接處理文件時(shí)會(huì)將BOM誤讀為內(nèi)容;而"utf_8_sig"會(huì)識(shí)別并處理BOM,避免亂碼,此方法為實(shí)踐經(jīng)驗(yàn),供參考2024-09-09
Python自動(dòng)化處理日常任務(wù)的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何使用Python自動(dòng)化處理日常任務(wù),例如自動(dòng)化文件管理,自動(dòng)化定時(shí)任務(wù),自動(dòng)化發(fā)送郵件等,有需要的小伙伴可以參考一下2025-01-01
Python連接和操作PostgreSQL數(shù)據(jù)庫(kù)的流程步驟
PostgreSQL 是一種開(kāi)源的對(duì)象關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(ORDBMS),以其強(qiáng)大的功能和穩(wěn)定性而廣受歡迎,本文將詳細(xì)介紹如何使用 Python 連接和操作 PostgreSQL 數(shù)據(jù)庫(kù),需要的朋友可以參考下2024-10-10
Pytorch訓(xùn)練過(guò)程出現(xiàn)nan的解決方式
今天小編就為大家分享一篇Pytorch訓(xùn)練過(guò)程出現(xiàn)nan的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
python 執(zhí)行終端/控制臺(tái)命令的例子
今天小編就為大家分享一篇python 執(zhí)行終端/控制臺(tái)命令的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07

