使用flask_socketio實現客戶端間即時通信

  關于flask_socketio的入門可以看我的上一篇博客《使用flask_socketio實現服務端向客戶端定時推送》

  用socketio實現即時通信十分簡單,只需要客戶端發送用戶輸入的信息到后端,后端再將此信息廣播到所有連接到此命名域的客戶端就可以了。

from flask import Flask, render_template
from flask_socketio import SocketIO,emitapp = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)@app.route('/')
def index():return render_template('index.html')@socketio.on('imessage', namespace='/test_conn')
def test_message(message):emit('message',//后端廣播信息的事件名最好跟前端發送信息的事件名不一樣{'data': message['data']},broadcast=True)if __name__ == '__main__':socketio.run(app, debug=True)

  關鍵就是要在emit中加broadcast=True這一項,如果不加,只有發送信息的客戶端能收到消息

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title><script type="text/javascript" src="//code.jquery.com/jquery-1.4.2.min.js"></script><script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.5/socket.io.min.js"></script><script type="text/javascript">$(document).ready(function() {namespace = '/test_conn';var socket = io.connect(location.protocol + '//' + document.domain + ':' + location.port + namespace);
       //連接后發送日志socket.on(
'connect', function(){console.log('connected')});
       //點擊發送時將text框的內容發送到后端$(
'form#emit').submit(function(event) {socket.emit('imessage', {data: $('#emit_data').val()});return false;});
       //接收后端廣播的信息socket.on(
'message', function(msg) {$('#log').append('<br>' + $('<div/>').text(msg.data).html());});});</script> </head> <body><form id="emit" method="POST" action='#'><input type="text" name="emit_data" id="emit_data" placeholder="Message"><input type="submit" value="發送"></form><h2>Receive:</h2><div id="log"></div> </body> </html>

  打開兩個網頁都連接到http://127.0.0.1:5000/,測試一下,一個網頁發送的信息在另一個網頁也可以及時收到。一個簡陋的多人聊天系統完成了:)

轉載于:https://www.cnblogs.com/luozx207/p/9719597.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396682.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396682.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396682.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java繼承原理內存角度_Java基礎知識鞏固

最近發現自己的Java基礎知識還是有點薄弱&#xff0c;剛好有點空閑時間進行再補一補&#xff0c;然后進行整理一下&#xff0c;方便自己以后復習。其實個人認為Java基礎還是很重要的&#xff0c;不管從事Java后端開發還是Android開發&#xff0c;Java這塊的基礎還是重中之重&am…

python函數對變量的作用_python函數對變量的作用及遵循的原則

1.全局變量和局部變量全局變量&#xff1a;指在函數之外定義的變量&#xff0c;一般沒有縮進&#xff0c;在程序執行的全過程有效局部變量&#xff1a;指在函數內部使用的變量&#xff0c;僅在函數內部有效&#xff0c;當函數退出時變量將不存在例如&#xff1a;1 n1 #n是全局變…

不用開發實現RDS RDWeb門戶美化和個性化

個性化RDWeb界面RDWeb原生界面相對比較簡潔&#xff0c;每個企業部署的RDWeb都是千篇一律的&#xff0c;有些用戶可能希望將網頁裝飾得個性化點。在談到自定義Web界面&#xff0c;第一反應可能是使用代碼進行編寫&#xff0c;但是這里要和大家分享的是無代碼美化和自定義RDWeb界…

安卓使用富文本編輯器html5,Android富文本編輯器,圖文詳細

Android富文本編輯器,圖文詳細資源下載此資源下載價格為3D幣&#xff0c;請先登錄資源文件列表AndroidRichTextEditor/.classpath , 475AndroidRichTextEditor/.project , 857AndroidRichTextEditor/AndroidManifest.xml , 1281AndroidRichTextEditor/bin/AndroidManifest.xml …

python pip安裝pyinstaller報錯_pip install pyinstaller (安裝過程報錯解決)

安裝目標&#xff1a;pip install pyinstaller報錯內容&#xff1a;WARNING: You are using pip version 19.2.3, however version 20.0.2 is available.You should consider upgrading via the python -m pip install --upgrade pip command.解決方法&#xff1a;運行--->c…

[SQL]LeetCode183. 從不訂購的客戶 | Customers Who Never Order

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★?微信公眾號&#xff1a;山青詠芝&#xff08;shanqingyongzhi&#xff09;?博客園地址&#xff1a;山青詠芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;?GitHub地址&a…

access四舍五入取整round_access中round函數怎么用

access中round函數怎么用?access中round函數的用法&#xff01;下面&#xff0c;小編通過示例來給大家介紹access中round函數的用法。工具/原料access 2007方法/步驟打開access應用程序&#xff0c;新建一個數據庫&#xff0c;并新建如下圖所示的worker數據表&#xff0c;用于…

其他大神的配置 nginx 配置參考

2019獨角獸企業重金招聘Python工程師標準>>> user nginx nginx; worker_processes 2; #error_log logs/error.log; error_log logs/error.log notice; #error_log logs/error.log info; pid logs/nginx.pid; google_perftools_profiles /tmp/tcmalloc; worker_rlim…

小孩用計算機做作業怎么表達,計算機作業

滿意答案堯Dreaman夕2014.09.25采納率&#xff1a;40% 等級&#xff1a;10已幫助&#xff1a;1121人Windows中可以設置、控制計算機硬件配置和修改桌面布局的應用程序是( D)A) Word B) Excel C)資源管理器 D)控制面板多窗口的切換可以通過(D )來實現A)在任務欄上用鼠標單擊右…

Delphi讀寫二進制文件

http://www.cnblogs.com/hnxxcxg/p/3691742.html 二進制文件&#xff08;也叫類型文件&#xff09;&#xff0c;二進制文件是由一批同一類型的數據組成的一個數據序列&#xff0c;就是說一個具體的二進制文件只能存放同一種類型的數據。type TMember record Name : string[10]…

[No0000178]改善C#程序的建議1:非用ICloneable不可的理由

好吧&#xff0c;我承認&#xff0c;這是一個反標題&#xff0c;實際的情況是&#xff1a;我找不到一個非用ICloneable不可的理由。事實上&#xff0c;接口ICloneable還會帶來誤解&#xff0c;因為它只有一個Clone方法。 我們都知道&#xff0c;對象的拷貝分為&#xff1a;淺拷…

uniapp網絡請求獲取數據_2.uni-app 發起網絡請求

## uni.request(OBJECT)發起網絡請求。**OBJECT 參數說明**![](https://box.kancloud.cn/a90bf284df069eddde4019c04db7d627_861x475.png)**success 返回參數說明**![](https://box.kancloud.cn/10d44a6d100bb3833b22f2d41e85d8eb_861x165.png)**data 數據說明**最終發送給服務…

SOM 的兩種算法

我參考了這篇文章http://www.scholarpedia.org/article/Kohonen_network另一個很好的演示在這里http://www.math.le.ac.uk/people/ag153/homepage/PCA_SOM/PCA_SOM.htmlSOMt是訓練步一個輸入數據是n維向量待訓練的是一堆節點&#xff0c;這堆節點之間有邊連著&#xff0c;通常是…

python集合的兩種類型_python 入門之 – 集合類型(十九)

在python中&#xff0c;集合是一個無序的&#xff0c;不重復的數據組合&#xff0c;他的主要工作如下&#xff1a;1、去重&#xff0c;把一個列表變成集合&#xff0c;就自動去重了2、關系測試&#xff0c;測試兩組數據之間的交集、差集、并集等關系我來舉個例子&#xff0c;前…

計算機數值計算的相關文章,數值計算論文.doc

數值計算論文PAGE \* MERGEFORMAT 13高斯消去法在電路分析中的應用—利用計算機求解一些復雜電路的參數雷嘉豪電子信息工程學院自動化一班100401102摘 要求解線性代數方程組的數值方法有很多&#xff0c;但歸納起來&#xff0c;可分為兩類&#xff1a;一種是直接法&#xff0c;…

bzoj 2756奇怪的游戲

2756: [SCOI2012]奇怪的游戲 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 2571 Solved: 685[Submit][Status][Discuss]Description Blinker最近喜歡上一個奇怪的游戲。 這個游戲在一個 N*M 的棋盤上玩&#xff0c;每個格子有一個數。每次 Blinker 會選擇兩個相鄰的格子&…

秒懂,Java 注解 (Annotation)你可以這樣學

轉自: https://blog.csdn.net/briblue/article/details/73824058 文章開頭先引入一處圖片。 這處圖片引自老羅的博客。為了避免不必要的麻煩&#xff0c;首先聲明我個人比較尊敬老羅的。至于為什么放這張圖&#xff0c;自然是為本篇博文服務&#xff0c;接下來我自會說明。好了…

Java技術中的三大特性

為什么80%的碼農都做不了架構師&#xff1f;>>> 1&#xff0e;虛擬機 Java虛擬機JVM&#xff08;Java Virtual Machine&#xff09;在Java編程里面具有非常重要的地位&#xff0c;約相當…

matlab圖像增強分段線性函數_圖像增強、銳化,利用 PythonOpenCV 來實現 4 種方法!...

圖像增強目的使得模糊圖片變得更加清晰、圖片模糊的原因是因為像素灰度差值變化不大&#xff0c;圖片各區域產生視覺效果似乎都是一樣的&#xff0c; 沒有較為突出的地方&#xff0c;看起來不清晰的感覺解決這個問題的最直接簡單辦法&#xff0c;放大像素灰度值差值、使圖像中的…

python多人聊天室_Python基于Socket實現簡易多人聊天室

前言套接字(Sockets)是雙向通信信道的端點。 套接字可以在一個進程內&#xff0c;在同一機器上的進程之間&#xff0c;或者在不同主機的進程之間進行通信&#xff0c;主機可以是任何一臺有連接互聯網的機器。套接字可以通過多種不同的通道類型實現&#xff1a;Unix域套接字&…