我有一个管理套接字服务器的类。信息需要在它和处理程序之间双向传递。我可以使用一些变通方法让 Handler 将信息传递给游戏服务器,但反之则不行。这似乎是一个很普遍的需求。也有可能有更好的方法来做这件事,而且我违反了一些常见的做法,在这种情况下,我想知道,这样我就可以用更标准的方式编写代码(我不是想做任何花哨的事情)。
class GameServer:
class GameServerUDPHandler(socketserver.BaseRequestHandler):
#... (other, irrelevant functions)
def handle(self):
data = self.request[0].strip()
data = str(data, 'utf-8')
print(data)
socket = self.request[1]
data = data.split('\n')
option = data[0]
print(option)
c_add = self.client_address
if option == "register" and not self.server.base.has_started:
self.handle_register(socket, c_add)
print("test")
elif option == "get_postion":
handle_get_postion(socket, c_add, data[1])
elif option == "change_postion":
hande_changed_postion(socket, c_add, data[1])
#temporary
if len(self.server.base.players) > 0:
self.server.base.start
def __init__(self, port):
self.server = socketserver.UDPServer(("localhost", port), self.GameServerUDPHandler)
def start_server(self):
threading.Thread(target=self.server.serve_forever).start()
def start_game():
self.has_started = True
self.server.RequestHandler.alert_start()