国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python-Websocket的介紹及使用方法

這篇具有很好參考價(jià)值的文章主要介紹了Python-Websocket的介紹及使用方法。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

??????

哈嘍!大家好,我是【太陽打傘】,一位熱愛分享各種技術(shù)的博主!??????

?【太陽打傘】的創(chuàng)作宗旨:每一條命令都親自執(zhí)行過,每一行代碼都實(shí)際運(yùn)行過,每一種方法都真實(shí)實(shí)踐過,每一篇文章都良心制作過。???

?【太陽打傘】的博客中所有涉及命令、代碼的地方,除了提供圖片供大家參考,另外會(huì)在圖片下方提供一份純文本格式的命令或者代碼方便大家粘貼復(fù)制直接執(zhí)行命令或者運(yùn)行代碼。??????

?如果你對技術(shù)有著濃厚的興趣,歡迎關(guān)注【太陽打傘】,歡迎大家和我一起交流。??????

??????感謝各位朋友接下來的閱讀??????
?

1.簡介

WebSocket是一種在單個(gè)TCP連接上進(jìn)行全雙工通信的協(xié)議。WebSocket通信協(xié)議于2011年被IETF定為標(biāo)準(zhǔn)RFC 6455,并由RFC7936補(bǔ)充規(guī)范。WebSocket API也被W3C定為標(biāo)準(zhǔn)。

WebSocket使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡單,允許服務(wù)端主動(dòng)向客戶端推送數(shù)據(jù)。在WebSocket API中,瀏覽器和服務(wù)器只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進(jìn)行雙向數(shù)據(jù)傳輸。

Python-Websocket的介紹及使用方法

?

2.特點(diǎn)

它的最大特點(diǎn)就是,服務(wù)器可以主動(dòng)向客戶端推送信息,客戶端也可以主動(dòng)向服務(wù)器發(fā)送信息,是真正的雙向平等對話,屬于服務(wù)器推送技術(shù)的一種。

  • 較少的控制開銷
  • 更強(qiáng)的實(shí)時(shí)性
  • 保持連接狀態(tài)
  • 更好的二進(jìn)制支持
  • 可以支持?jǐn)U展
  • 更好的壓縮效果

連接成功狀態(tài)碼

101:HTTP協(xié)議切換為WebSocket協(xié)議。

3.WebSocket事件

Websocket對象的相關(guān)事件
事件 事件處理程序 描述
open Socket.onopen 連接建立時(shí)觸發(fā)
message Socket.onmessage 客戶端接收服務(wù)端數(shù)據(jù)時(shí)觸發(fā)
error Socket.onerror 通信發(fā)生錯(cuò)誤時(shí)觸發(fā)
close Socket.onclose 連接關(guān)閉時(shí)觸發(fā)

4.WebSocket方法

WebSocket對象的相關(guān)方法
方法 描述
Socket.send() 使用連接發(fā)送數(shù)據(jù)
Socket.close() 關(guān)閉連接

5.使用方法

(1).前端vue 3.0


根據(jù)token來建立鏈接信息,需要把當(dāng)前用戶的token傳到服務(wù)器

"token":localStorage.getItem("token"),


//聲明一個(gè)方法
init_websocket:function(){

        //建立websocket鏈接
      if("WebSocket" in window){

        var ws = new WebSocket("ws://localhost:8000/websocket/?token=" + this.token);

        ws.onopen = function(){

          //web socket 已連接上,使用send()方法發(fā)送數(shù)據(jù)

          console.log("建立鏈接");
          ws.send("我是前端傳來的信息");
        }

        ws.onmessage = function(evt){

          console.log(evt.data);
            
            
          
          //反序列化
          


          }


          alert("數(shù)據(jù)已接收")
        }

        ws.onclose = function(){

          //關(guān)閉websocket

          console.log("鏈接關(guān)閉了")
        }



      }else{

        alert("你的瀏覽器不支持websocket,請更換chrome")
      }



    }

        

(2).后端 tornado

1.導(dǎo)入需要使用的模塊:

from tornado.web import url

from functools import wraps


from tornado import websocket

from base import BaseHandler

import json

2.寫入視圖類:

clients = {}



async def push_message(uid,message):

    

    # 查找發(fā)送的對象
    
    if uid in clients:
         print(uid,message)
         clients[uid]["connect"].write_message(message)
    



class BaseWebSocket(websocket.WebSocketHandler):
    def check_origin(self, origin):
        """重寫同源檢查 解決跨域問題"""
        return True

    # 開啟鏈接
    # 進(jìn)行校驗(yàn)
    @websocket_jwt
    async def open(self):

        global clients

        # 存儲用戶鏈接
        clients[self._cuser.id] = {"connect":self}

        print(clients)
        print("開啟鏈接")

    # 接收消息
    def on_message(self, message):
        print(message)

    # 斷開
    @websocket_jwt
    def on_close(self):

        del clients[self.self._cuser.id]
        print("鏈接斷開了")


class PushWebSocket(BaseHandler):

    async def post(self):

        uid = self.get_argument("uid")

        await push_message(int(uid),"這是后端傳來的消息")

        self.finish({"errcode":0,'msg':"消息推送成功"})

3.寫測試腳本


# token是前端用戶的token,已修改,記得用自己的哦
data = {'uid':16,"token":'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTZ9.XvNppt0kbk9YdcWE2eT-OS6DZGiHfYLWWY5Qz_lSCpu'}




if __name__ == '__main__':


    res = requests.post("http://localhost:8000/push/",data=data)
    print(res.text)

4.配置路由文章來源地址http://www.zghlxwxcb.cn/news/detail-414306.html

# 聲明路由
urlpatterns = [
    url('/websocket/', BaseWebSocket),
    url('/push/', PushWebSocket),


]

到了這里,關(guān)于Python-Websocket的介紹及使用方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python觀察者模式介紹、使用方法

    Python觀察者模式是一種行為型設(shè)計(jì)模式,它將對象分成兩個(gè)部分:觀察者和主題。觀察者在主題狀態(tài)改變時(shí)被通知并且更新自己。 功能: 通過解耦來實(shí)現(xiàn)可重用性和靈活性。 提供了一種對象間的一對多依賴關(guān)系,當(dāng)一個(gè)對象改變狀態(tài)時(shí),所有依賴對象都會(huì)收到通知。 主題和

    2024年02月15日
    瀏覽(27)
  • python中的cnn:介紹和基本使用方法

    python中的cnn:介紹和基本使用方法 卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,簡稱CNN)是一種在圖像識別、語音識別、自然語言處理等許多領(lǐng)域取得顯著成功的深度學(xué)習(xí)模型。CNN的設(shè)計(jì)靈感來源于生物的視覺系統(tǒng),由多個(gè)卷積層、池化層和全連接層組成。 在Python中,我們通常使

    2024年02月12日
    瀏覽(22)
  • python中的lstm:介紹和基本使用方法

    python中的lstm:介紹和基本使用方法 未使用插件 LSTM(Long Short-Term Memory)是一種循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的變體,專門用于處理序列數(shù)據(jù)。LSTM 可以記憶序列中的長期依賴關(guān)系,這使得它非常適合于各種自然語言處理(NLP)和時(shí)間序列預(yù)測任務(wù)。 在 Python 中,你可以使用深度學(xué)習(xí)框

    2024年02月12日
    瀏覽(29)
  • python中的svm:介紹和基本使用方法

    python中的svm:介紹和基本使用方法 支持向量機(jī)(Support Vector Machine,簡稱SVM)是一種常用的分類算法,可以用于解決分類和回歸問題。SVM通過構(gòu)建一個(gè)超平面,將不同類別的數(shù)據(jù)分隔開,使得正負(fù)樣本之間的間隔(也稱為邊緣)最大化。 在Python中,可以使用scikit-learn庫來使用

    2024年02月12日
    瀏覽(25)
  • chatgpt賦能python:Python的Popen介紹及使用方法

    在Python編程中,我們經(jīng)常需要執(zhí)行外部命令并獲取結(jié)果。而Python中的Popen函數(shù)就是一個(gè)方便的工具,可以啟動(dòng)另一個(gè)進(jìn)程并與之交互。在本文中,我們將介紹Popen的基礎(chǔ)知識以及使用方法。 Popen是Python的subprocess模塊提供的一個(gè)函數(shù),可以啟動(dòng)一個(gè)新進(jìn)程并與之交互。它的基本

    2024年02月10日
    瀏覽(23)
  • chatgpt賦能python:python中的iloc:介紹和基本使用方法

    chatgpt賦能python:python中的iloc:介紹和基本使用方法

    在Python中,Dataframe是數(shù)據(jù)分析中最常用的數(shù)據(jù)結(jié)構(gòu)。iloc是Python Pandas庫中用于簡化數(shù)據(jù)切片和子集操作的一種方法。 本文將介紹iloc的基礎(chǔ)概念和基本使用方法,并且通過實(shí)際的示例來演示如何使用iloc來快速選擇和操作數(shù)據(jù)集。 iloc是“integer location”的縮寫,意為“整數(shù)位置

    2024年02月04日
    瀏覽(24)
  • Python中os.environ基本介紹及使用方法

    Python中os.environ基本介紹及使用方法

    os.environ簡介 os.environ 是Python中的一個(gè)字典對象,它包含了當(dāng)前進(jìn)程的環(huán)境變量。通過使用 os.environ ,可以獲取和設(shè)置環(huán)境變量的值。 下面是給給定的Python代碼添加注釋說明的示例 在上述代碼中,我們首先導(dǎo)入了 os 模塊,然后使用 os.environ.get() 方法獲取名為 PATH 的環(huán)境變量的

    2024年04月12日
    瀏覽(30)
  • chatgpt賦能python:Python的分割函數(shù):split的介紹和使用方法

    在Python編程中,我們經(jīng)常需要對字符串進(jìn)行操作。其中,分割字符串是一項(xiàng)常見的任務(wù)。Python中的split()函數(shù)可以用于將字符串按照指定的分隔符進(jìn)行拆分。本文將介紹split()函數(shù)的使用方法以及注意事項(xiàng)。 split()函數(shù)是Python中內(nèi)置的一個(gè)字符串函數(shù),用于將字符串分割成一個(gè)字

    2024年02月10日
    瀏覽(18)
  • 【Python】進(jìn)階學(xué)習(xí):__len__()方法的使用介紹

    【Python】進(jìn)階學(xué)習(xí):__len__()方法的使用介紹

    【Python】進(jìn)階學(xué)習(xí): __len__() 方法的使用介紹 ?? 個(gè)人主頁:高斯小哥 ?? 高質(zhì)量專欄:Matplotlib之旅:零基礎(chǔ)精通數(shù)據(jù)可視化、Python基礎(chǔ)【高質(zhì)量合集】、PyTorch零基礎(chǔ)入門教程?? 希望得到您的訂閱和支持~ ?? 創(chuàng)作高質(zhì)量博文(平均質(zhì)量分92+),分享更多關(guān)于深度學(xué)習(xí)、PyTorc

    2024年03月14日
    瀏覽(22)
  • 【Python_Selenium學(xué)習(xí)筆記(一)】Selenium介紹及基本使用方法

    【Python_Selenium學(xué)習(xí)筆記(一)】Selenium介紹及基本使用方法

    Selenium是一套 Web 網(wǎng)站的程序自動(dòng)化操作解決方案,廣泛應(yīng)用于自動(dòng)化測試及爬蟲。此篇文章主要介紹 Selenium 的 安裝和基本使用流程。 Selenium 框架的安裝主要就是安裝兩樣?xùn)|西: Selenium 客戶端庫 和 瀏覽器驅(qū)動(dòng) 。 1.1、Selenium 框架安裝 使用 pip 命令安裝 pip install selenium ,安裝

    2023年04月13日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包