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

用flask框架flask-sock和websocket創(chuàng)建一個(gè)自己的聊天界面

這篇具有很好參考價(jià)值的文章主要介紹了用flask框架flask-sock和websocket創(chuàng)建一個(gè)自己的聊天界面。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

WebSocket 協(xié)議在10年前就已經(jīng)標(biāo)準(zhǔn)化了(在2011年,你能相信嗎?)所以我相信你不需要介紹。但是如果你不熟悉它,WebSocket 是 HTTP 協(xié)議的一個(gè)擴(kuò)展,它在客戶端和服務(wù)器之間提供了一個(gè)永久的、雙向的通信通道,在這里雙方可以實(shí)時(shí)地發(fā)送和接收數(shù)據(jù),而不受 HTTP 的請(qǐng)求/響應(yīng)周期的限制。

如果您正在使用 Flask 2,那么您現(xiàn)在有了一個(gè)名為 Flask-Sock 的新擴(kuò)展,它為您的應(yīng)用程序提供了現(xiàn)代 WebSocket 支持。在本文中,我將向您展示如何使用這個(gè)擴(kuò)展。

先安裝依賴:

pip install flask-sock

擴(kuò)展通過(guò)創(chuàng)建 Sock ()實(shí)例添加到 Flask 應(yīng)用程序中。如果您有一個(gè)全局應(yīng)用程序?qū)ο螅梢允褂弥苯映跏蓟椒?

sock = Sock(app)

?如果在工廠函數(shù)中創(chuàng)建應(yīng)用程序?qū)嵗?,那么兩步初始化方法也可以工?

sock = Sock()

def create_app():
    app = Flask(__name__)
    sock.init_app(app)

Sock 實(shí)例有一個(gè)路由修飾器,它的工作方式與 Flask 的非常相似,但是它添加了 WebSocket 協(xié)議握手,這樣路由就可以使用 WebSocket 而不是 HTTP。下面是一個(gè)簡(jiǎn)單的服務(wù)器,它向客戶機(jī)發(fā)送任何內(nèi)容都會(huì)回顯到該服務(wù)器:

@sock.route('/echo')
def echo(ws):
    while True:
        data = ws.receive()
        ws.send(data)

一個(gè)完整的例子

讓我們來(lái)看一個(gè)完整的例子,下面是 Flask 應(yīng)用程序的代碼:

from flask import Flask, render_template
from flask_sock import Sock

app = Flask(__name__)
sock = Sock(app)


@app.route('/')
def index():
    return "你好,世界"


@app.route('/ws')
def websocket():
    return """
    <!doctype html>
    <html>
      <head>
        <title>Flask-Sock Demo</title>
      </head>
      <body>
        <h1>Flask-Sock Demo</h1>
        <div id="log"></div>
        <br>
        <form id="form">
          <label for="text">Input: </label>
          <input type="text" id="text" autofocus>
        </form>
        <script>
          const log = (text, color) => {
            document.getElementById('log').innerHTML += `<span style="color: ${color}">${text}</span><br>`;
          };
    
          const socket = new WebSocket('ws://' + location.host + '/echo');
          socket.addEventListener('message', ev => {
            log('<<< ' + ev.data, 'blue');
          });
          document.getElementById('form').onsubmit = ev => {
            ev.preventDefault();
            const textField = document.getElementById('text');
            log('>>> ' + textField.value, 'red');
            socket.send(textField.value);
            textField.value = '';
          };
        </script>
      </body>
    </html>
    """


@sock.route('/echo')
def echo(self):
    while True:
        data = self.receive()
        self.send(data)


if __name__ == '__main__':
    app.run(host="0.0.0.0", port=8989)

這基于上面顯示的 echo 服務(wù)器代碼。應(yīng)用程序有一個(gè)url:http://192.168.110.196:8989/ws,它返回客戶端頁(yè)面,還有一個(gè)/echo 路由,它實(shí)現(xiàn)了 WebSocket 回顯端點(diǎn)。

下面是html 頁(yè)面內(nèi)容:

<!doctype html>
<html>
  <head>
    <title>Flask-Sock Demo</title>
  </head>
  <body>
    <h1>Flask-Sock Demo</h1>
    <div id="log"></div>
    <br>
    <form id="form">
      <label for="text">Input: </label>
      <input type="text" id="text" autofocus>
    </form>
    <script>
      const log = (text, color) => {
        document.getElementById('log').innerHTML += `<span style="color: ${color}">${text}</span><br>`;
      };

      const socket = new WebSocket('ws://' + location.host + '/echo');
      socket.addEventListener('message', ev => {
        log('<<< ' + ev.data, 'blue');
      });
      document.getElementById('form').onsubmit = ev => {
        ev.preventDefault();
        const textField = document.getElementById('text');
        log('>>> ' + textField.value, 'red');
        socket.send(textField.value);
        textField.value = '';
      };
    </script>
  </body>
</html>

當(dāng)你訪問(wèn):http://192.168.110.196:8989/ws

你就能看到一個(gè)這樣的頁(yè)面: 并且會(huì)默認(rèn)創(chuàng)建一個(gè)websocket鏈接用flask框架flask-sock和websocket創(chuàng)建一個(gè)自己的聊天界面,HTML前端,Python人生,flask,websocket,python

讓你輸入消息并發(fā)送的時(shí)候,就能看到效果了:

用flask框架flask-sock和websocket創(chuàng)建一個(gè)自己的聊天界面,HTML前端,Python人生,flask,websocket,python?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-731804.html

到了這里,關(guān)于用flask框架flask-sock和websocket創(chuàng)建一個(gè)自己的聊天界面的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • python創(chuàng)建一個(gè)簡(jiǎn)單的flask應(yīng)用

    python創(chuàng)建一個(gè)簡(jiǎn)單的flask應(yīng)用

    下面用python在本地和服務(wù)器上分別創(chuàng)建一個(gè)簡(jiǎn)單的flask應(yīng)用: 1.在pc本地 1)pip flask后創(chuàng)建一個(gè)簡(jiǎn)單的腳本flask_demo.py win+R進(jìn)入命令行,切換到flask_demo.py的路徑,執(zhí)行 啟動(dòng)應(yīng)用 如果顯示啟動(dòng)失敗,可能的原因是: 設(shè)置FLASK_APP環(huán)境變量:在命令行中輸入以下命令,將FLASK_APP環(huán)境

    2024年02月05日
    瀏覽(26)
  • 使用pycharm+flask創(chuàng)建一個(gè)html網(wǎng)頁(yè)

    使用pycharm+flask創(chuàng)建一個(gè)html網(wǎng)頁(yè)

    準(zhǔn)備工作:在pycharm中將flask設(shè)置為debug模式,點(diǎn)擊Flask(app.py),編輯配置,進(jìn)來(lái)后將FLASK_DEBUG的勾打上; 上面的弄好之后,再來(lái)看一下Flask目錄(如果你要運(yùn)行本文的代碼,目錄要和下圖的目錄一致) 附上3個(gè)html的代碼 (1)register.html (2)result.html代碼 (3)index.html代碼 下面

    2024年02月09日
    瀏覽(30)
  • flask框架-[實(shí)現(xiàn)websocket]:將socketio處理函數(shù)部分集中管理,使用類的方式來(lái)管理,集中管理socketio處理函數(shù)

    注意:在flask2.x版本依賴,不再支持flask_script了 flask2.x版本會(huì)自動(dòng)注冊(cè) flask run 和flask db 兩個(gè)命令行命令 1、啟動(dòng)項(xiàng)目 flask run --host 0.0.0.0 --port 9000 2、數(shù)據(jù)庫(kù)遷移命令 flask db init flask db migrate flask db upgrade apps ????????__init__.py? : 創(chuàng)建app應(yīng)用,各種注冊(cè) ??????? websocket ??

    2024年02月07日
    瀏覽(27)
  • 從零用python flask框架寫一個(gè)簡(jiǎn)易的網(wǎng)站

    要用Python寫一個(gè)網(wǎng)站,你可以使用Python的Web框架來(lái)開(kāi)發(fā)。常見(jiàn)的Python Web框架包括Django、Flask、Bottle等。以下是一個(gè)簡(jiǎn)單的使用Flask框架開(kāi)發(fā)的示例。 在開(kāi)始開(kāi)發(fā)之前,你需要安裝Flask框架。你可以使用以下命令來(lái)安裝: 在安裝完Flask之后,你可以創(chuàng)建一個(gè)Flask應(yīng)用。以下是一個(gè)

    2024年02月12日
    瀏覽(22)
  • Flask 項(xiàng)目怎么配置并創(chuàng)建第一個(gè)小項(xiàng)目?附上完成第一個(gè)小案例截圖

    Flask 項(xiàng)目怎么配置并創(chuàng)建第一個(gè)小項(xiàng)目?附上完成第一個(gè)小案例截圖

    目錄 1. 為什么要學(xué)習(xí) flask? 2. flask 是什么? 3. flask 如何使用? 要安裝 Flask,可以按照以下步驟進(jìn)行: 4. 使用流程 4.1. 新建項(xiàng)目 4.1.1. 打開(kāi) pycharm,新建項(xiàng)目 4.1.2. 設(shè)置目錄,并添加環(huán)境 4.1.3. 找到之前創(chuàng)建的虛擬環(huán)境 4.1.4. 然后點(diǎn)擊 OK 4.1.5. 注意,項(xiàng)目目錄和環(huán)境目錄不一樣

    2024年01月16日
    瀏覽(26)
  • 一個(gè)簡(jiǎn)單的Web程序(詳解創(chuàng)建一個(gè)Flask項(xiàng)目后自帶的一個(gè)簡(jiǎn)單的Web程序)

    一個(gè)簡(jiǎn)單的Web程序(詳解創(chuàng)建一個(gè)Flask項(xiàng)目后自帶的一個(gè)簡(jiǎn)單的Web程序)

    程序代碼截圖如下:? 在創(chuàng)建 Flask 程序時(shí),通常需要先創(chuàng)建一個(gè)應(yīng)用實(shí)例進(jìn)行應(yīng)用初始化。 上述代碼中,使用 Flask 類創(chuàng)建了一個(gè)應(yīng)用實(shí)例 app。 __name__ 參數(shù)用于獲取當(dāng)前代碼文件的文件名,作為應(yīng)用實(shí)例的名稱。 if __name__ == \\\'__main__\\\': app.run(debug=True) 用于啟動(dòng)服務(wù)器并運(yùn)行應(yīng)

    2024年01月20日
    瀏覽(29)
  • PHP最簡(jiǎn)單自定義自己的框架創(chuàng)建目錄結(jié)構(gòu)(二)

    PHP最簡(jiǎn)單自定義自己的框架創(chuàng)建目錄結(jié)構(gòu)(二)

    1、mvc目錄結(jié)構(gòu)? ?2、目錄解釋 KJ:項(xiàng)目名稱 ? core:框架核心目錄 ? ? ? ? ? KJ.php 框架運(yùn)行入口 ? index: 框架模塊 ? ? ? ? ? ?controller:模塊控制器 ? ? ? ? ? ?model:模塊模型數(shù)據(jù)庫(kù)操作 ? ? ? ? ? ?view:頁(yè)面顯示html ? index.php:index模塊框架入口 3、index.php框架入口文件引入框

    2024年02月13日
    瀏覽(17)
  • 【Unity】創(chuàng)建一個(gè)自己的AR安卓程序

    【Unity】創(chuàng)建一個(gè)自己的AR安卓程序

    Unity版本:2021.3.1f1 LTS 可在此處通過(guò)打開(kāi)Unity Hub下載 安裝過(guò)程中提示添加模塊時(shí),需要選擇Android Build Support及其子模塊。 zip下載位置在此,點(diǎn)擊即可下載。 下載完成解壓后,即可通過(guò)Hub打開(kāi)該工程。 具體操作如下: 在Hub中項(xiàng)目欄目的右上角點(diǎn)擊打開(kāi),也可以點(diǎn)擊下拉箭頭選

    2023年04月27日
    瀏覽(22)
  • Vue+Nodejs 使用WebSocket創(chuàng)建一個(gè)簡(jiǎn)易聊天室

    Vue+Nodejs 使用WebSocket創(chuàng)建一個(gè)簡(jiǎn)易聊天室

    使用vue編寫前端頁(yè)面,nodejs處理服務(wù)端消息,WebSocket進(jìn)行實(shí)時(shí)通信 1.客戶端 2. 服務(wù)端 使用的是nodejs

    2024年02月16日
    瀏覽(25)
  • 【Unity】創(chuàng)建一個(gè)自己的AR臉部特效安卓程序

    【Unity】創(chuàng)建一個(gè)自己的AR臉部特效安卓程序

    接著上篇文章的創(chuàng)建一個(gè)簡(jiǎn)單的AR安卓程序,這次來(lái)創(chuàng)建一個(gè)自己的AR換臉程序。同樣使用之前的項(xiàng)目,在Assets的Scene文件夾下使用Ctrl+N新建一個(gè)Scene(或者File→New Scene),選擇AR場(chǎng)景,點(diǎn)擊Create創(chuàng)建: 這樣,就可以直接在配置好AR環(huán)境的AR Scene中添加自己的模型了,使用Ctrl+

    2024年01月16日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包