nejma
1.0.0
channels 에서 영감을 얻은 Nejma는 채널 그룹에 메시지를 관리하고 보낼 수 있습니다.
nejma 와 함께 구축 할 수있는 것 :
nejma 와 starlette 사용하여 구축 된 간단한 채팅 응용 프로그램 인 nejma-chat 이 예를 살펴보십시오.
$ pip install nejma 다음은 Websockets와 함께 nejma 사용하는 예입니다.
Nejma의 첫 번째 가져 오기 채널 및 Channel_Layer
from nejma import Channel , channel_layerConnect에서 채널을 만듭니다
async def on_connect ( self , websocket , ** kwargs ):
await super (). on_connect ( websocket , ** kwargs )
self . channel = Channel ( send = websocket . send )그룹, 채널을 추가하거나 메시지를 보내십시오
async def on_receive ( self , websocket , data ):
self . channel_layer . add ( group , self . channel )
await self . channel_layer . group_send ( group , "Welcome !" )Finnaly, 연결이 닫히면 채널을 제거하십시오
async def on_disconnect ( self , websocket , close_code ):
self . channel_layer . remove_channel ( self . channel ) starlette 와 함께 nejma 사용하려면 Nejma에서 WebSocketendpoint를 가져 오기 만하면됩니다.
from nejma . ext . starlette import WebSocketEndpoint
@ app . websocket_route ( "/ws" )
class Chat ( WebSocketEndpoint ):
encoding = "json"
async def on_receive ( self , websocket , data ):
room_id = data [ 'room_id' ]
message = data [ 'message' ]
username = data [ 'username' ]
if message . strip ():
group = f"group_ { room_id } "
self . channel_layer . add ( group , self . channel )
payload = {
"username" : username ,
"message" : message ,
"room_id" : room_id
}
await self . channel_layer . group_send ( group , payload ) nejma 가 제공하는 ChannelLayer 클래스는 다음 방법을 노출시킵니다.
add(group, channel, send=None)
기부 그룹에 채널을 추가합니다.
self . channel_layer . add ( group , self . channel , send = websocket . send ) async group_send(group, "Welcome !")
채널 그룹에 메시지를 보냅니다
await self . channel_layer . group_send ( group , "Welcome !" ) remove(group, channel)
주어진 그룹에서 채널을 제거합니다
self . channel_layer . remove ( group , self . channel ) remove_channel(channel)
모든 그룹에서 채널을 제거합니다
self . channel_layer . remove_channel ( self . channel ) flush()
모든 그룹을 재설정하십시오
self . channel_layer . flush ()