python socketio_python3--socketIO_client 摸索怕坑指南

前言:

websocket和socketIO是全然不同的兩個東西,websocket的話 使用自帶ws的庫就可以完成一些功能,但是socketIO屬于sw的另外一塊內容

工作中遇到了一個監控socketIO傳輸的聊天信息監控的需求.研究了一陣 話不多說 上代碼!

from socketIO_client import SocketIO, BaseNamespace

import time

import requests

import logging

from app.test_report.constant import VIEWER_DATA, TEACHER_DATA, VIEWER_DATA_MUTIL, TEACHER_DATA_MUTIL # 這里引入四個變量 放在flask里面起一個單獨文件防止有坑!

logging.getLogger('socketIO-client').setLevel(logging.DEBUG)

logging.basicConfig() # 調試時候可以自定義日志

class TeacherNamespace(BaseNamespace):

def on_teacher_response(self, *args):

print('qqq', args, type(args))

class ViewerNamespace(BaseNamespace):

def on_viewer_response(self, *args):

print(args, type(args))

def get_sessionid(userid, roomid):

pass

def on_connect(*args):

# print(*args)

print('connect')

def on_disconnect():

print('## disconnect ##')

def on_reconnect():

print('reconnect')

def revc_message(*args): # 這個函數很重要 是socketio監聽信息獲取的函數, 這里面socketio會自行調用這個函數

response_data_format = {}

response_data = eval(args[0])

print(response_data)

def revc_message_mutil(*args): # 這個函數很重要 是socketio監聽信息獲取的函數, 這里面socketio會自行調用這個函數

response_data_format = {}

response_data = eval(args[0])

print(response_data)

def create_params(userid,roomid): # 這個方法類似requests庫的封裝方法 看底層貌似與requests的urllib3方法一樣

vsessionid, tsessionid = get_sessionid(userid, roomid)

vparams = {

'sessionid': vsessionid,

}

tparams = {

'sessionid': tsessionid,

}

return vparams, tparams

def sio(userid, roomid, host=' xxx.net', vparams='', tparams=''):

if not vparams and not tparams:

vparams, tparams = create_params(userid, roomid)

vsocketIO = SocketIO(host, params=vparams)

tsocketIO = SocketIO(host, params=tparams)

viewer = vsocketIO.define(ViewerNamespace, path=f'/asjbfasbfk') # 這個path類似于信道的路徑 很重要

teacher = tsocketIO.define(TeacherNamespace, path=f'/asjbfasbfk') # 這個path類似于信道的路徑 很重要

viewer.on('connect', on_connect)

viewer.on('chat_message', revc_message)

viewer.on('disconnect', on_disconnect)

viewer.on('reconnect', on_reconnect)

teacher.on('connect', on_connect)

teacher.on('chat_message', revc_message)

teacher.on('disconnect', on_disconnect)

teacher.on('reconnect', on_reconnect)

return teacher, vsocketIO, tsocketIO

def send_msg(domain_host, featurestype, sendmessage, userid, roomid, timer=1):

teacher, vsocketIO, tsocketIO = sio(userid, roomid, host=domain_host)

for i in range(timer):

teacher.emit('chat_message', f'{sendmessage}', revc_message)

vsocketIO.wait(seconds=1)

tsocketIO.wait(seconds=1)

return VIEWER_DATA, TEACHER_DATA

def send_msg_mutil(domain_host, featurestype, sendmessage, userid, roomid, timer=1, vparams='', tparams=''):

teacher, vsocketIO, tsocketIO = sio(userid, roomid, host=domain_host, vparams=vparams, tparams=tparams)

for i in range(timer):

teacher.emit('chat_message', f'{sendmessage}', revc_message_mutil)

vsocketIO.wait(seconds=1)

tsocketIO.wait(seconds=1)

return VIEWER_DATA, TEACHER_DATA

def clear_data():

VIEWER_DATA.clear()

TEACHER_DATA.clear()

if __name__ == '__main__':

s = time.time()

print(send_msg('xxxx.net', 1, '發送信息1', '7848DB3F76g7ts7057F', 'E301DFFFCDDAG7S79GY9A01307461'))

print(time.time()-s)

clear_data()

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

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

相關文章

java正則表達式非貪婪_正則表達式中的貪婪與非貪婪匹配模式

1.首先看看下面的例子:try{str"abcdefgabcdefghijkl";re1str.match(/[\W\w]?/ig);alert("非貪婪模式:\r\n\r\n1:"re1[0]"\r\n2:"re1[1]);re1str.match(/[\W\w]/ig);alert("貪婪模…

python編程運算符號-Python中的邏輯運算符

參考資料:http://blog.csdn.net/sasoritattoo/article/details/12451359 一、邏輯判斷詞not 1.在python中not是邏輯判斷詞,用于布爾型True和False,not True為False,not False為True,以下是幾個常用的not的用法&#xf…

代碼實現tan graph model for classification_自定義 Estimator 實現(以BERT為例)

本文將主要介紹tensorflow 的Estimator 這個高級API,它的主要作用就是提出一個高級范式(paradigm),將模型的訓練,驗證,預測,以及保存規范起來,免去了tensorflow的Session.run 的操作…

Linux查看文件內容

cat 一次性將文件內容全部輸出到控制臺 more 可以翻頁查看 空格:下翻一頁 b:上翻一頁 q:退出 less 可以翻頁查看 空格:下翻一頁 b:上翻一頁 q:退出 向上鍵:上翻一行 向下鍵&#xff1…

刷新頁面微信二維碼圖片隨機換,點擊按鈕自動復制對應微信號

<div style"text-align: center;"> <p style"font-size: 18px;color: rgb(255, 79, 121);">添加微信號</p> <span style"font-size: 18px;margin-left: 10%;" id"cod">jyl88jimei</span><br /> &…

SecureCRT向多個tab窗口發命令

可以利用SecureCRT的 Chat Windows選項Send chat to all tabs來同時在服務器上執行相同的命令&#xff0c;具體步驟如下&#xff1a; 一、首先在SecureCRT里同時打開多個服務器session 二、選擇菜單欄View -->Chat Windows 對號&#xff0c;此時所有服務器連接下方應該有個…

英雄聯盟怎么解除小窗口_英雄聯盟手游怎么加好友_英雄聯盟手游怎么加好友一起玩_資訊...

英雄聯盟手游是騰訊聯合英雄聯盟開發商拳頭開發的英雄聯盟手游。不僅能夠高度還原端游的經典操作和競技體驗&#xff0c;也具有非常多創新的元素&#xff0c;對于英雄聯盟的全球生態布局具有重要意義。英雄聯盟手游游戲中有非常多的英雄可以供玩家選擇&#xff0c;并且擁有排位…

jfinal mysql 配置文件_JFinal 如何將操作日志存入到數據庫中

展開全部操作日志, 也分粗細顆粒.比如常見的 配置JFinal的Handler, 配置LogHandler的處理器&#xff0c;Handler可以接管所有web請求, 這里可以做粗顆粒的處理, 對每一個請62616964757a686964616fe59b9ee7ad9431333365653839求做入庫處理, 如果訪問量大時, 入庫操作做列隊處理就…

快速入門python_一天快速入門 Python

Python 是由Guido Van Rossum在 90 年代早期設計&#xff0c;現在是最常用的編程語言之一。特別是人工智能的火熱&#xff0c;再加之它的語法簡潔且優美&#xff0c;實乃初學者入門AI必備的編程語言。作者 | yuquanle責編 | 屠敏Python基本語法標識符第一個字符必須是英文字母或…

Sonar與jenkins集成

2019獨角獸企業重金招聘Python工程師標準>>> 參考文檔&#xff1a;http://blog.csdn.net/kefengwang/article/details/54377055 一.下載&#xff1a;wget https://fossies.org/linux/misc/sonarqube-7.0.zip 二.配置sonar.properties ## sudo vim /opt/sonarqube-6.…

python變量和常量_5、python的變量和常量

今天看看python的變量和常量&#xff0c;這是python中最基本的兩個概念。首先先說一下解釋器執行Python的過程&#xff1a; python3 C:\test.py1. 啟動python解釋器(內存中)2. 將C:\test.py內容從硬盤讀入內存(這一步與文本編輯器是一樣的)3. 執行讀入內存的代碼如果想要永久…

eplan連接定義點不顯示_EPLAN電氣圖實例--控制柜(控制面板)

EPLAN電氣圖實例--控制柜(控制面板)上期回顧(上期主要畫了硬件的布局圖)&#xff1a;這期主要畫一個控制面板控制柜布局1.0 上期主要做了一個長方形的結構板&#xff0c;里面插入了一個結構盒&#xff0c;然后放置一個HMI的宏(這里是KTP1000&#xff0c;在官網隨便找下就行了)&…

virtualbox安裝android6.0并設置分辨率為1920x1080x32

下載安裝&#xff1a;https://www.cnblogs.com/wynn0123/p/6288344.html 這里我做的是下載android6.0-64bit&#xff0c;然后文件系統只支持ext4 安裝完成之后我的虛擬機名稱是Android6.0 設置分辨率為1920x1080x32&#xff1a;https://my.oschina.net/xldc/blog/290155 首先&a…

python中裝飾器修復技術_python3之裝飾器修復技術@wraps

普通函數def f():"""這是一個用來測試裝飾器修復技術的函數"""print("哈哈哈")if __name__ __main__:print("執行的函數名:", f.__name__)print("函數的注釋:", f.__doc__)# 打印結果執行的函數名: f函數的注釋:…

markdown 語法_markdown特殊語法之上下標

markdown特殊語法之上下標?markdown的基本語法很簡單&#xff0c;百度一下就可以了&#xff0c;有空的話我再轉載一些過來。我想的是平常其實需要用到的一些輸入技巧&#xff0c;特殊用法或者擴展語法&#xff0c;還有一些難點倒是要記錄學習一下。在寫作的時候&#xff0c;大…

oracle安裝向導卡住了_JDK 8 的安裝與配置

一、安裝環節1. 打開網頁https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html2.找到對象的版本 盡量從官網下載(官網可能會比較慢&#xff0c;也可以通過瀏覽器輸入jdk版本號進行下載)官網下載需要注冊一個賬號3.雙擊下載的 exe,如 jdk-8u131-windows…

Error contacting service. It is probably not running.

安裝完zookeeper集群后&#xff0c; [rootzk1 data]# zkServer.sh start JMX enabled by default Using config: /application/zookeeper-3.3.6/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [rootzk1 data]# zkServer.sh status JMX enabled by default Using config…

JavaScript 函數節流 throttle 和防抖 debounce

今天和別人聊到JavaScript函數的節流和防抖&#xff0c;發現自己對這兩個的區別很是模糊&#xff0c;遂小小實踐一下&#xff0c;在此記錄&#xff0c;希望對需要的人有所幫助。 節流 - 頻繁操作&#xff0c;間隔一定時間去做一件事 舉例說明&#xff1a;假定時間間隔為 500ms&…

python 第三方繪圖庫_D3py首頁、文檔和下載 - 基于 D3 的 Python 繪圖庫 - OSCHINA - 中文開源技術交流社區...

D3py 是一個基于 D3 的 Python 繪圖庫&#xff0c;可以像 D3 那樣畫出可交互的漂亮圖形。D3py 的目的是把來自命令行或者腳本的數據畫到瀏覽器窗口&#xff0c;d3py 通過構建兩個優秀的包來實現這一點。 第一個是 d3.js(Mike Bostock)&#xff0c;它是一個用于創建數據驅動文檔…

web 前端 如何分享到instagram_如何找到靠譜的Web培訓機構?web前端培訓機構哪個好?...

現如今Web前端開發應用越來越廣泛&#xff0c;Web前端工程師人才需求逐年遞增&#xff0c;薪資待遇也是水漲船高&#xff0c;也因此吸引了越來越多的人想要邁入Web前端行業&#xff0c;參加Web前端培訓是很多人選擇學習前端開發技能的途徑&#xff0c;那么Web前端培訓機構哪個好…