交换扭曲的客户端P

2024-04-19 22:07:07 发布

您现在位置:Python中文网/ 问答频道 /正文

在Twisted中,buildProtocol函数允许我为每个用户创建一个类。我希望能够为每个用户创建两个独立的类。一个用于连接,另一个用于验证身份并准备加入聊天室并与客户聊天。你知道吗

以下是我当前的buildProtcol:

    def buildProtocol(self, addr):
        connection = self.playerManager.createConnectionClient (addr)
        return connection

我希望在他们验证自己并将现有数据传输到新对象(self.playerManager.createPlayerClient (addr))之后,能够删除这个对象。你知道吗

如何将Twisted存储的原始对象与新对象交换,以便新对象从现在开始接收所有数据?你知道吗

我可以很容易地生成一个布尔值(isAuthenticated),然后将所有数据转发给新对象,但如果有办法销毁原来的对象并用新对象替换它,我宁愿不要同时拥有两个现有对象。你知道吗


Tags: 数据对象函数用户self客户deftwisted
1条回答
网友
1楼 · 发布于 2024-04-19 22:07:07

你要寻找的确切的东西——在传输运行时将传输协议切换出去——还没有实现。详见https://twistedmatrix.com/trac/ticket/3204。你知道吗

然而,你所寻找的是稍微错误的。该协议的任务是解析从线路上传入的字节。如果为了实现身份验证,您需要切换与之交谈的协议对象,那么您给了协议对象太多的责任。你知道吗

相反,让您的协议解析消息,并且在解析完消息之后,将实际的应用程序逻辑委托给用户对象上的方法。然后,在进行身份验证时,切换出它正在与哪个用户对象通信。Twisted本身就是这样在IMAP、POP、SSH、HTTP和其他协议中实现身份验证的。你知道吗

相关问题 更多 >