由outputManager管理整个输出类及解析消息、分流消息功能,debug部分配置对接、xml导出部分配置对接

This commit is contained in:
2022-06-05 14:48:59 +08:00
parent 9fe1384b5d
commit 49a0715191
7 changed files with 153 additions and 107 deletions

View File

@ -1,73 +0,0 @@
import os
from handler.common import MESSAGE_QUEUE
from messages.control import ControlMessage
from protobuf import message_pb2
from protobuf import wss_pb2
import gzip
from messages.member import MemberMessage
from messages.like import LikeMessage
from messages.roomuserseq import RoomUserSeqMessage
from messages.gift import GiftMessage
from messages.social import SocialMessage
from messages.chat import ChatMessage
from output import OUTPUTER
def loop_queue():
while True:
message = MESSAGE_QUEUE.get()
try:
response = message_pb2.Response()
wss = wss_pb2.WssResponse()
wss.ParseFromString(message.body)
decompressed = gzip.decompress(wss.data)
response.ParseFromString(decompressed)
decodeMsg(response.messages)
except Exception as e:
for output in OUTPUTER:
output.error_output("ParseError", message.body, e)
def decodeMsg(messages):
for message in messages:
try:
if message.method == 'WebcastMemberMessage':
member_message = MemberMessage()
member_message.set_payload(message.payload)
for output in OUTPUTER:
output.member_output(member_message)
elif message.method == 'WebcastSocialMessage':
social_message = SocialMessage()
social_message.set_payload(message.payload)
for output in OUTPUTER:
output.social_output(social_message)
elif message.method == 'WebcastChatMessage':
chat_message = ChatMessage()
chat_message.set_payload(message.payload)
for output in OUTPUTER:
output.chat_output(chat_message)
elif message.method == 'WebcastLikeMessage':
like_message = LikeMessage()
like_message.set_payload(message.payload)
for output in OUTPUTER:
output.like_output(like_message)
elif message.method == 'WebcastGiftMessage':
gift_message = GiftMessage()
gift_message.set_payload(message.payload)
for output in OUTPUTER:
output.gift_output(gift_message)
elif message.method == 'WebcastRoomUserSeqMessage':
room_user_seq_message = RoomUserSeqMessage()
room_user_seq_message.set_payload(message.payload)
for output in OUTPUTER:
output.userseq_output(room_user_seq_message)
elif message.method == 'WebcastControlMessage':
control_message = ControlMessage()
control_message.set_payload(message.payload)
for output in OUTPUTER:
output.control_output(control_message)
else:
for output in OUTPUTER:
output.other_output(message.method, message.payload)
except Exception as e:
for output in OUTPUTER:
output.error_output(message.method, message.payload, e)