python-socketio 文檔翻譯(API指南)

一、soketio.Middleware

class socketio.Middleware(socketio_app, wsgi_app=None, socketio_path='socket.io')

用於Socket.IO的WSGI中間件。

此中間件將流量分派到 Socket.IO 應用程序(application),並可選地將常規HTTP流量轉發給WSGI應用程序。

參數:

socketio_app  # Socket.IO服務端
wsgi_app  # 接收所有其他流量的WSGI應用程序。
socketio_path  # 應該安裝Socket.IO應用程序的端點。默認值適用於大多數情況。

示例:

import socketio
import eventlet
from . import wsgi_app

sio = socketio.Server()
app = socketio.Middleware(sio, wsgi_app)
eventlet.wsgi.server(eventlet.listen(('', 8000)), app)  // 這裏是監聽端口

二、socketio.Server

  1. 初始化Server
class socketio.Server(client_manager=None, logger=False, binary=False, json=None, async_handlers=False, **kwargs)

一個Socket.IO服務端。
這個類實現了完全兼容的Socket.IO Web服務器,支持websocket和long-polling傳輸。

參數:

client_manager # 將管理客戶端列表的客戶端管理器實例。當這被省略時,客戶列表被存儲在內存中的結構中,所以不能使用多個連接的服務端。
logger # 啓用日誌記錄設置True或傳遞記錄器對象使用。禁用日誌記錄設置爲False。默認是 False。
binary # True支持二進制有效載荷,False將所有有效載荷視爲文本。在Python 2中,如果設置爲True, 則將unicode值視爲文本,str並將 bytes值視爲二進制。這個選項對Python 3沒有任何影響,Python 3總是自動發現文本和二進制的有效載荷。
json # 用於編碼和解碼數據包的替代json模塊。自定義json模塊必須具有dumps與loads 標準庫版本兼容的功能。
async_handlers  # 如果設置爲True,事件處理程序在不同的線程中執行。要同步運行處理程序,請設置爲False。默認是False。
kwargs  # 底層Engine.IO服務器的連接參數。[具體參數請參考官方文檔](https://python-socketio.readthedocs.io/en/latest/)
close_room(room, namespace=None)

關閉一個聊天室。
該功能可以移除給定房間內的所有客戶端。

參數:

room  # 聊天室名稱
namespace  # 事件的Socket.IO命名空間。如果省略此參數,則使用默認名稱空間。
disconnect(sid,namespace = None )

斷開客戶端。

參數:

sid  # 客戶端的會話ID。
namespace  # 要斷開的Socket.IO命名空間。如果省略此參數,則使用默認名稱空間。
emit(event,data = None,room = None,skip_sid = None,namespace = None,callback = None,** kwargs )

向一個或多個連接的客戶端發出自定義事件。

注意:這裏我們emit room的話,那麼room中所有的連接的用戶可以直接觸發這個event事件。room也可以是單獨的用戶的sid,那麼就只會給這個人傳遞。

參數:

event  # 事件名稱。它可以是任何字符串。事件名稱 `connect`, `message`, `disconnect` 保留,不應該使用。
data  # 要發送給客戶端或多個客戶端的數據。數據可以是`str`,`bytes`,`list`, `dict`類型,如果是一個`list`或者`dict`, 數據將被序列化爲JSON。
room # 消息的接收者。這可以設置爲客戶端的會話ID來處理該客戶的房間,或者由應用程序創建的任何自定義房間。如果省略該參數,則將事件廣播給所有連接的客戶端。
skip_sid  # 廣播到房間或所有客戶端時要跳過的客戶端的會話ID。這可以用來防止郵件被髮送到發件人。
namespace  # 事件的Socket.IO命名空間。如果省略此參數,則該事件將發送到默認名稱空間。
callback  # 如果給定,將調用此函數來確認客戶端已收到消息。傳遞給函數的參數是客戶端提供的參數。回撥函數只能在尋址單個客戶端時使用。

ignore_queue  # 僅在配置消息隊列時使用。如果設置爲True,該事件直接發送到客戶端,而不通過隊列。這是更高效的,但只有在使用單個服務器進程時纔有效。建議始終將此參數保留爲其默認值False。
enter_room(sid,room,namespace = None )

進入一個房間。

此功能將客戶端添加到一個房間。

handle_request(environ,start_response )

處理來自客戶端的HTTP請求。
這是Socket.IO應用程序的入口點,使用與WSGI應用程序相同的接口。對於典型的用法,這個函數是由Middleware實例調用的,但是在不使用中間件的時候可以直接調用。

參數:

environ  # WSGI環境。
start_response   # WSGI start_response函數。

該函數返回HTTP響應正文以字節序列傳遞給客戶端。

leave_room(sid,room,namespace = None )

離開房間。

這個功能可以將客戶端移除房間。

參數:

sid  # 客戶端的會話ID。
room # 房間名稱。
namespace  # 事件的Socket.IO命名空間。如果省略此參數,則使用默認名稱空間。
on(event,handler = None,namespace = None )

註冊事件處理程序。

參數:

event  # 事件名稱。它可以是任何字符串。事件名稱 'connect','message'和'disconnect'保留,不能使用。
handler  # 應該被調用來處理事件的函數。當沒有給出這個參數時,該方法充當處理函數的裝飾器。
namespace  # 事件的Socket.IO命名空間。如果省略此參數,則處理程序將與默認名稱空間關聯。

用法示例:

# as a decorator:
@socket_io.on('connect', namespace='/chat')
def connect_handler(sid, environ):
    print('Connection request')
    if environ['REMOTE_ADDR'] in blacklisted:
        return False  # reject

# as a method:
def message_handler(sid, msg):
    print('Received message: ', msg)
    eio.send(sid, 'response')
socket_io.on('message', namespace='/chat', message_handler)

處理函數接收sid客戶端的(會話ID)作爲第一個參數。'connect'事件處理程序接收WSGI環境作爲第二個參數,並且可以返回False拒絕連接。'message'自定義事件名稱的處理程序和處理程序將接收消息有效內容作爲第二個參數。從消息處理程序返回的任何值將傳遞給客戶端的確認回調函數(如果存在)。該 'disconnect'處理器不採取第二個參數。

register_namespace(namespace_handler )

註冊名稱空間處理程序對象。

參數:

namespace_handler  # [`Namespace`](https://python-socketio.readthedocs.io/en/latest/#socketio.Namespace "socketio.Namespace") 處理命名空間的所有事件通信的子類的實例。
rooms(sid,namespace = None )

返回客戶所在的房間。

參數:

sid # 客戶端的會話ID。
namespace  # 事件的Socket.IO命名空間。如果省略此參數,則使用默認名稱空間。
send(data, room=None, skip_sid=None, namespace=None, callback=None, **kwargs)

發送消息給一個或多個連接的客戶端。

這個函數用名字發出一個事件'message'。使用 emit()發出自定義事件的名稱。

參數:

data  # 要發送給客戶端或客戶端的數據。數據可以是類型的str,bytes,list或dict。如果一個 listor dict,數據將被序列化爲JSON。
room  # 消息的接收者。這可以設置爲客戶端的會話ID來處理該客戶的房間,或者由應用程序創建的任何自定義房間。如果省略該參數,則將事件廣播給所有連接的客戶端。
skip_sid  #  廣播到房間或所有客戶端時要跳過的客戶端的會話ID。這可以用來防止郵件被髮送到發件人。
namespace  # 事件的Socket.IO命名空間。如果省略此參數,則該事件將發送到默認名稱空間。
callback  # 如果給定,將調用此函數來確認客戶端已收到消息。傳遞給函數的參數是客戶端提供的參數。回撥函數只能在尋址單個客戶端時使用。
ignore_queue  #  僅在配置消息隊列時使用。如果設置爲True,該事件直接發送到客戶端,而不通過隊列。這是更高效的,但只有在使用單個服務器進程時纔有效。建議始終將此參數保留爲其默認值False。
sleep(seconds=0)

使用適當的異步模式睡眠所需的時間。

這是一個應用程序可用於將任務置於睡眠狀態的實用程序功能,無需擔心爲選定的異步模式使用正確的調用。

start_background_task(target, *args, **kwargs)

使用適當的異步模型開始後臺任務。
這是應用程序可用於使用與所選異步模式兼容的方法啓動後臺任務的實用程序功能

參數:

target  # 要執行的目標函數。
args  # 傳遞給函數的參數。
kwargs  # 傳遞給函數的關鍵字參數。

這個函數返回一個與Python標準庫中的 Thread 類兼容的對象。這個對象的 start() 方法已經被這個函數調用。

transport(sid )

返回客戶端使用的傳輸名稱。
這個函數返回的兩個可能的值是'polling' 和'websocket'。

參數:

sid  # 客戶端的會話

三、socketio.AsyncServer

class socketio.AsyncServer(client_manager=None, logger=False, json=None, async_handlers=False, **kwargs)

一個使用asyncio的Socket.IO服務器。
這個類實現了完全兼容的Socket.IO web服務器,支持websocket和長輪詢傳輸,與Python 3.5+和asyncio框架兼容。

參數:

client_manager  # 將管理客戶端列表的客戶端管理器實例。當這被省略時,客戶列表被存儲在內存中的結構中,所以不能使用多個連接的服務器。
logger  # 啓用日誌記錄設置True或傳遞記錄器對象使用。禁用日誌記錄設置爲False。
json  # 用於編碼和解碼數據包的替代json模塊。自定義json模塊必須具有dumps與loads 標準庫版本兼容的功能。
async_handlers  # 如果設置爲True,事件處理程序在不同的線程中執行。要同步運行處理程序,請設置爲False。默認是False。
kwargs  # 底層Engine.IO服務器的連接參數。 [具體參數參考](https://python-socketio.readthedocs.io/en/latest/)
attach(app,socketio_path ='socket.io' )

將Socket.IO服務器連接到應用程序。

close_room(room,namespace = None 

關閉一個聊天室。
該功能可以移除給定房間內的所有客戶端。

參數:

room  # 房間名稱。
namespace  # 事件的Socket.IO命名空間。如果省略此參數,則使用默認名稱空間。

注意:這個方法是一個協程。

disconnect(sid,namespace = None )

斷開客戶端。

參數:

sid  # 客戶端的會話ID。
namespace  # 要斷開的Socket.IO命名空間。如果省略此參數,則使用默認名稱空間。

注意:這個方法是一個協程。

emit(event,data = None,room = None,skip_sid = None,namespace = None,callback = None,** kwargs )

向一個或多個連接的客戶端發出自定義事件。

參數:

event  # 事件名稱。它可以是任何字符串。事件名稱'connect','message'和'disconnect'保留,不應該使用。
data  # 要發送給一個或多個客戶端的數據。數據可以是類型的str,bytes,list或dict。如果一個 list 或者 dict,數據將被序列化爲JSON。
room # 消息的接收者。這可以設置爲客戶端的會話ID來處理該客戶的房間,或者由應用程序創建的任何自定義房間。如果省略該參數,則將事件廣播給所有連接的客戶端。
skip_sid  # 廣播到房間或所有客戶端時要跳過的客戶端的會話ID。這可以用來防止郵件被髮送到發件人。
namespace  # 事件的Socket.IO命名空間。如果省略此參數,則該事件將發送到默認名稱空間。
callback # 如果給定,將調用此函數來確認客戶端已收到消息。傳遞給函數的參數是客戶端提供的參數。回撥函數只能在尋址單個客戶端時使用。
ignore_queue # 僅在配置消息隊列時使用。如果設置爲True,該事件直接發送到客戶端,而不通過隊列。這是更高效的,但只有在使用單個服務器進程時纔有效。建議始終將此參數保留爲其默認值False。

注意:這個方法是一個協程。

enter_room(sid,room,namespace = None )

將一個sid代表的客戶端拉入一個聊天室。
此功能將客戶端添加到一個房間。該emit()send()功能可以有選擇地事件報告給在一個房間裏的所有的客戶。
參數:

sid  # 客戶端的會話ID。
room  # 聊天室名稱。如果房間不存在,則創建它。
namespace  # 事件的Socket.IO命名空間。如果省略此參數,則使用默認名稱空間。
handle_request(*args, **kwargs)

處理來自客戶端的HTTP請求。這是Socket.IO應用程序的入口點。這個函數返回HTTP響應正文傳遞給客戶端。

注意:這個方法是一個協程。

leave_room(sid, room, namespace=None)

離開房間。
這個功能從房間中刪除客戶端。

參數:

sid  # 客戶端的會話ID
room  # 聊天室名稱
namespace  # 事件的Socket.IO命名空間。如果省略此參數,則使用默認名稱空間。
on(event,handler = None,namespace = None )

註冊事件處理程序。

參數:

event  # 事件名稱。它可以是任何字符串。事件名稱'connect','message'和'disconnect'保留,不應使用。
handler  # 應該被調用來處理事件的函數。當沒有給出這個參數時,該方法充當處理函數的裝飾器。
namespace  # 事件的Socket.IO命名空間。如果省略此參數,則處理程序將與默認名稱空間關聯。

示例:

# as a decorator:
@socket_io.on('connect', namespace='/chat')
def connect_handler(sid, environ):
    print('Connection request')
    if environ['REMOTE_ADDR'] in blacklisted:
        return False  # reject

# as a method:
def message_handler(sid, msg):
    print('Received message: ', msg)
    eio.send(sid, 'response')
socket_io.on('message', namespace='/chat', message_handler)

處理函數接收sid客戶端的(會話ID)作爲第一個參數。'connect'事件處理程序接收WSGI環境作爲第二個參數,並且可以返回False到拒絕連接。'message'自定義事件名稱的處理程序和處理程序將接收消息有效內容作爲第二個參數。從消息處理程序返回的任何值將傳遞給客戶端的確認回調函數(如果存在)。該 'disconnect'處理器不採取第二個參數。

register_namespace(namespace_handler )

註冊名稱空間處理程序對象。

參數:

namespace_handler  # [`Namespace`](https://python-socketio.readthedocs.io/en/latest/#socketio.Namespace "socketio.Namespace") 處理命名空間的所有事件通信的子類的實例。
rooms(sid,namespace = None )

返回sid客戶所在的所有的房間。

send(data,room = None,skip_sid = None,namespace = None,callback = None,** kwargs )

發送消息給一個或多個連接的客戶端。
這個函數用名字發出一個事件'message'。使用 emit()發出自定義事件的名稱。

參數:

data  # 要發送給一個或多個客戶端的數據。數據可以是類型的str,bytes,list或dict。如果一個 listor dict,數據將被序列化爲JSON。
room # 消息的接收者。這可以設置爲客戶端的會話ID來處理該客戶的房間,或者由應用程序創建的任何自定義房間。如果省略該參數,則將事件廣播給所有連接的客戶端。
skip_sid  # 廣播到房間或所有客戶端時要跳過的客戶端的會話ID。這可以用來防止郵件被髮送到發件人。
namespace  # 事件的Socket.IO命名空間。如果省略此參數,則該事件將發送到默認名稱空間。
callback # 如果給定,將調用此函數來確認客戶端已收到消息。傳遞給函數的參數是客戶端提供的參數。回撥函數只能在尋址單個客戶端時使用。
ignore_queue  # 僅在配置消息隊列時使用。如果設置爲True,該事件直接發送到客戶端,而不通過隊列。這是更高效的,但只有在使用單個服務器進程時纔有效。建議始終將此參數保留爲其默認值False。

注意:這個方法是一個協程。

sleep(seconds=0)

使用適當的異步模型睡眠給定的時間。

start_background_task(target, *args, **kwargs)

使用適當的異步模型開始後臺任務。
這是應用程序可用於使用與所選異步模式兼容的方法啓動後臺任務的實用程序功能。

參數:

target  # 要執行的目標函數。必須是一個協程
args  # 傳遞給函數的參數
kwargs  # 傳遞給函數的關鍵字參數

返回值是一個asyncio.Task對象。
注意:這個方法是一個協程。

transport(sid)

返回客戶端使用的傳輸名稱。

這個函數返回的兩個可能的值是'polling' 和'websocket'。

參數:

sid # 客戶端的會話。

四、class socketio.Namespace

1.class socketio.Namespace(namespace = None )
基於類的命名空間的基類。
基於類的命名空間是一個包含Socket.IO命名空間的所有事件處理程序的類。該事件處理程序與前綴類的方法on_,比如on_connect,on_disconnect, on_message,on_json,等。

參數:

namespace  # 與該類中定義的所有事件處理函數一起使用的Socket.IO命名空間。如果省略此參數,則使用默認名稱空間。
close_room(room,namespace = None 

關閉一個聊天室。
socketio.Server.close_room()
方法唯一的區別是,如果namespace沒有給出參數,則使用與該類關聯的名稱空間。

disconnect(sid,namespace = None )

斷開客戶端。

socketio.Server.disconnect()
方法唯一的區別是,如果namespace沒有給出參數,則使用與該類關聯的名稱空間。

emit(event,data = None,room = None,skip_sid = None,namespace = None,callback = None )

向一個或多個連接的客戶端發出自定義事件。
與該socketio.Server.emit()方法唯一的區別是,如果namespace沒有給出參數,則使用與該類關聯的名稱空間。

enter_room(sid,room,namespace = None )

進入一個聊天室。
與該socketio.Server.enter_room()方法唯一的區別是,如果namespace沒有給出參數,則使用與該類關聯的名稱空間。

leave_room(sid,room,namespace = None )

離開房間。
與該socketio.Server.leave_room()方法唯一的區別是,如果namespace沒有給出參數,則使用與該類關聯的名稱空間。

rooms(sid,namespace = None )

返回給定sid客戶所在的所有房間。

與該socketio.Server.rooms()方法唯一的區別是,如果namespace沒有給出參數,則使用與該類關聯的名稱空間。

send(data,room = None,skip_sid = None,namespace = None,callback = None )

發送消息給一個或多個連接的客戶端。
與該socketio.Server.send()方法唯一的區別是,如果namespace沒有給出參數,則使用與該類關聯的名稱空間。

trigger_event(event,* args )

將事件分派給適當的處理程序方法。
在最常見的用法中,這個方法不會被子類重載,因爲它將事件路由到方法。但是,如果需要特殊的調度規則,或者需要捕獲所有事件的單個方法,則可以重寫此方法。

五、class socketio.AsyncNamespace

class socketio.AsyncNamespace(namespace = None )

基於asyncio類的名稱空間的基類。

基於類的命名空間是一個包含Socket.IO命名空間的所有事件處理程序的類。該事件處理程序與前綴類的方法on_,比如on_connect,on_disconnect, on_message,on_json,等。這些可以是常規函數或協程。

參數:

namespace  # 與該類中定義的所有事件處理函數一起使用的Socket.IO命名空間。如果省略此參數,則使用默認名稱空間。
close_room(room,namespace = None )

關閉一個聊天室。

與該socketio.Server.close_room()方法唯一的區別是,如果namespace沒有給出參數,則使用與該類關聯的名稱空間。

注意:這個方法是一個協程。

disconnect(sid,namespace = None )

斷開客戶端。
與該socketio.Server.disconnect()方法唯一的區別是,如果namespace沒有給出參數,則使用與該類關聯的名稱空間。
注意:這個方法是一個協程。

emit(event,data = None,room = None,skip_sid = None,namespace = None,callback = None )

向一個或多個連接的客戶端發出自定義事件。

與該socketio.Server.emit()方法唯一的區別是,如果namespace沒有給出參數,則使用與該類關聯的名稱空間。

注意:這個方法是一個協程。

enter_room(sid,room,namespace = None )

進入一個房間。

與該socketio.Server.enter_room()方法唯一的區別是,如果namespace沒有給出參數,則使用與該類關聯的名稱空間。

leave_room(sid,room,namespace = None )

將給定sid的用戶移除房間。

與該socketio.Server.leave_room()方法唯一的區別是,如果namespace沒有給出參數,則使用與該類關聯的名稱空間。

rooms(sid,namespace = None )

返回客戶所在的房間。

與該socketio.Server.rooms()方法唯一的區別是,如果namespace沒有給出參數,則使用與該類關聯的名稱空間。

send(data,room = None,skip_sid = None,namespace = None,callback = None )

發送消息給一個或多個連接的客戶端。

與該socketio.Server.send()方法唯一的區別是,如果namespace沒有給出參數,則使用與該類關聯的名稱空間。

注意:這個方法是一個協程。

trigger_event(event,* args )

將事件分派給適當的處理程序方法。

在最常見的用法中,這個方法不會被子類重載,因爲它將事件路由到方法。但是,如果需要特殊的調度規則,或者需要捕獲所有事件的單個方法,則可以重寫此方法。

注意:這個方法是一個協程。

六、socketio.BaseManager 類

管理客戶端連接。
這個班跟蹤所有客戶和他們所在的房間,以支持消息廣播。該類使用的數據存儲在內存結構中,僅適用於單個進程服務。更復雜的存儲後端可以通過子類來實現。

close_room(room, namespace)

從房間中刪除所有參與者。

connect(sid,namespace )

將客戶端連接註冊到名稱空間。

disconnect(sid,namespace )

從命名空間註冊客戶端斷開連接。

emit(event,data,namespace,room = None,skip_sid = None,callback = None,** kwargs )

將消息發送到單個客戶端,一個房間或連接到命名空間的所有客戶端。

enter_room(sid,namespace,room )

添加一個客戶端到一個房間。

get_namespaces()

用活動的命名空間名稱返回一個迭代。

get_participants(namespace,room )

返回一個房間裏的積極參與者迭代。

get_rooms(sid,namespace )

返回客戶所在的房間。

initialize()

在收到第一個請求之前調用。子類可以在這裏添加它們的初始化代碼。

leave_room(sid,namespace,room 

從聊天室中移除一個客戶端。

pre_disconnect(sid,namespace )

將客戶端置於未連接列表中。
這允許客戶端數據結構在調用斷開連接處理程序時出現,但仍然認識到客戶端即將離開的事實。

trigger_callback(sid,namespace,id,data )

調用應用程序回調。

七、class socketio.PubSubManager

class socketio.PubSubManager(channel ='socketio',write_only = False )

管理附加到發佈/訂閱後端的客戶列表。

這是一個基類,它允許多個服務器共享客戶端列表,服務器通過發佈/訂閱後端來傳遞事件。pub / sub後端的使用還允許連接到後端的任何客戶端發送發送到Socket.IO客戶端的事件。

實際的後端必須由子類來實現,這個類只提供一個pub / sub通用框架。

參數:

channel - 服務器發送和接收通知的頻道名稱
emit(event,data,namespace = None,room = None,skip_sid = None,callback = None,** kwargs )

將消息發送到單個客戶端,一個房間或連接到命名空間的所有命名空間。
此方法將消息傳遞給通過消息隊列連接的所有服務器。

參數與在Server.emit()。中相同。

八、class socketio.KombuManager

class socketio.KombuManager(url ='amqp:// guest:guest @ localhost:5672 //',channel ='socketio',write_only = False )

使用kombu進行進程間消息傳遞的客戶端管理者。

該類使用RabbitMQ,Redis或kombu支持的任何其他消息傳遞機制實現跨多個進程的事件共享的客戶端管理器後端。

要使用kombu後端,請Server按以下步驟初始化實例:

url = 'amqp://user:password@hostname:port//'
server = socketio.Server(client_manager=socketio.KombuManager(url))

參數:

url  # *   後端消息傳遞隊列的連接URL。例如連接URL是`'amqp://guest:guest@localhost:5672//'`與`'redis://localhost:6379/'`分別對的RabbitMQ和Redis的。有關如何構建連接URL的更多信息,請參閱[kombu文檔](http://kombu.readthedocs.org/en/latest/userguide/connections.html#urls)。
*   **頻道** - 服務器發送和接收通知的頻道名稱。在所有服務器中必須相同。
write_only # 如果設置爲ot True,則只初始化爲發出事件。的缺省False初始化類用於發射和接收。

九、class socketio.RedisManager

class socketio.RedisManager(url ='redis:// localhost:6379/0',channel ='socketio',write_only = False )

Redis的客戶端管理者。

這個類實現了一個Redis後端,用於跨多個進程的事件共享。只是作爲一個例子來說明如何構建一個自定義後端,因爲kombu後端完全可以支持Redis消息隊列。

要使用Redis後端,請Server按以下步驟初始化實例:

url = 'redis://hostname:port/0'
server = socketio.Server(client_manager=socketio.RedisManager(url))

參數:

url  # Redis服務器的連接URL。對於在同一主機上運行的默認Redis存儲,請使用redis://。
channel  # 服務器發送和接收通知的頻道名稱。在所有服務器中必須相同。
write_only  # 如果設置爲ot True,則只初始化爲發出事件。的缺省False初始化類用於發射和接收。

十、socketio.AsyncManager類

管理asyncio服務器的客戶端管理者。

close_room(room, namespace)

從房間中移除所有參與者。

注意:這個方法是一個協程。

connect(sid, namespace)

將客戶端連接註冊到名稱空間。

disconnect(sid, namespace)

從命名空間註冊客戶端斷開連接。

emit(event, data, namespace, room=None, skip_sid=None, callback=None, **kwargs)

將消息發送到單個客戶端,一個房間或連接到命名空間的所有客戶端。

注意:這個方法是一個協程。

enter_room(sid, namespace, room)

添加一個客戶端到一個房間。

get_namespaces()

用活動的命名空間名稱返回一個迭代。

get_participants(namespace, room)

返回一個房間裏的活躍的參與者迭代。

get_rooms(sid, namespace)

返回客戶所在的所有房間。

initialize()

在收到第一個請求之前調用。子類可以在這裏添加它們的初始化代碼。

leave_room(sid, namespace, room)

從客房中刪除一個客戶端。

pre_disconnect(sid, namespace)

將客戶端置於將要斷開連接的(to-be-disconnected )列表中。

這允許客戶端數據結構在調用斷開連接處理程序時出現,但仍然認識到客戶端即將離開的事實。

trigger_callback(sid, namespace, id, data)

調用應用程序回調。

注意:這個方法是一個協程。

十一、class socketio.AsyncRedisManager

class socketio.AsyncRedisManager(url ='redis:// localhost:6379/0',channel ='socketio',write_only = False )

基於Redis的asyncio服務器客戶端管理器。

這個類實現了一個Redis後端,用於跨多個進程的事件共享。只是作爲一個例子來說明如何構建一個自定義後端,因爲kombu後端完全可以支持Redis消息隊列.

要使用Redis後端,請Server按以下步驟初始化實例:

server = socketio.Server(client_manager=socketio.AsyncRedisManager(
    'redis://hostname:port/0'))

參數:

url  # Redis服務器的連接URL。對於在同一主機上運行的默認Redis存儲,請使用redis://。
channel # 服務器發送和接收通知的頻道名稱。在所有服務器中必須相同。
write_only  # 如果設置爲True,則只初始化爲發出事件。的缺省False初始化類用於發射和接收。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章