日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python长连接框架_python之websocket【长连接的实现】

發布時間:2025/4/5 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python长连接框架_python之websocket【长连接的实现】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

websocket技術簡單來說就是實現了長連接的技術,相對于傳統的ajax或者輪詢,websocket主要實現了雙通信,并且減少了長輪詢的多次請求的時間。總的來說,在很多應用上面能夠發揮更好的作用,比如在線聊天等。下面主要寫下python下面的server端的實現代碼,以及client端代碼,最終是瀏覽器端的js實現的client代碼。

python的server端:

import asyncio

import websockets

async def echo(websocket, path):

async for message in websocket:

await websocket.send(message)

print(message)

asyncio.get_event_loop().run_until_complete(

websockets.serve(echo, 'localhost', 8765))

asyncio.get_event_loop().run_forever()

python的client端:

import asyncio

import websockets

import time

async def hello(uri):

async with websockets.connect(uri) as websocket:

while True:

send=input("輸入要發送的內容:")

await websocket.send(send)

greeting = await websocket.recv()

print(greeting)

#time.sleep(3)

asyncio.get_event_loop().run_until_complete(hello('ws://localhost:8765'))

js的client端:

websocket(runoob.com)

wwwww

var socket = new WebSocket('ws://localhost:8765');

// 打開Socket

socket.onopen = function(event) {

// 發送一個初始化消息

socket.send('I am the client and I\'m listening!');

// 監聽消息

socket.onmessage = function(event) {

console.log('Client received a message',event);

};

// 監聽Socket的關閉

socket.onclose = function(event) {

console.log('Client notified socket has closed',event);

};

// 關閉Socket....

//socket.close()

};

document.body.οnclick=function (){

console.log(123);

socket.send('I am the client and I\'m listening!');

}

一開始,我是通過python的client端來請求server端的,發現了每次send一個數據之后,連接就斷開了,至此讓我懷疑websocket的理解,因為一開始我理解的是,連接一次不應該斷開。但是這次的連接之后我發現websocket連接一次就斷了,我一度懷疑websocket就是一次性的連接。后來研究了很久,官網代碼看了一些,還是不行。最終我就使用了js來請求。因為很早之前就聽過swoole寫過PHP的websocket服務端,然后js請求,能不間斷發送消息。最終的結果很滿意,js能夠多次請求【之間還嘗試了好幾個例子,也是一次性的,很無奈】。通過js實現的client讓我更加確信websocket是可以長期連接的,并且期間可以不間斷發送數據。通過js的client的實現,我得出至少python的server端是沒有問題的。最后研究了client的代碼,在這上面下功夫,發現加一個while True就能實現了。【其實很無奈的,之前也試過while True的,而且嘗試過在不同位置寫,居然沒試出來,不知道為什么,也沒有代碼記錄】,總的來說,現在是完成了websocket的實現,對websocket的印象進一步加深了許多!

總結

以上是生活随笔為你收集整理的python长连接框架_python之websocket【长连接的实现】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。