交换扭曲的客户端协议
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交换扭曲的客户端协议相关的知识,希望对你有一定的参考价值。
在Twisted中,buildProtocol函数允许我为每个用户创建一个类。我希望能够为每个用户创建两个单独的类。一个用于连接时,另一个用于经过身份验证并准备加入房间并与客户聊天时。
这是我目前的buildProtcol:
def buildProtocol(self, addr):
connection = self.playerManager.createConnectionClient (addr)
return connection
我希望能够在验证自己并将现有数据传输到新对象(self.playerManager.createPlayerClient (addr)
)后删除此对象。
如何将Twisted已存储的原始对象与新对象交换,以便新对象从现在开始接收所有数据?
我可以轻松地创建一个布尔值(isAuthenticated
),然后将所有数据转发到新对象,但如果有办法销毁原始对象并将其替换为新对象,我宁愿不要同时拥有两个现有对象。
您正在寻找的确切事项 - 在运行时切换运输协议 - 尚未实施。有关详细信息,请参阅https://twistedmatrix.com/trac/ticket/3204。
但是,你正在寻找的是略有错误。协议的工作是解析线路上的字节。如果您需要切换正在与之通信的Protocol对象以实现身份验证,那么您已经为Protocol对象提供了太多的责任。
相反,让您的协议解析消息,并在解析它们之后,将实际的应用程序逻辑委托给User对象上的方法。然后,当您进行身份验证时,切换出与之对话的User对象。这就是Twisted本身在IMAP,POP,SSH,HTTP和其他协议中实现身份验证的方式。
以上是关于交换扭曲的客户端协议的主要内容,如果未能解决你的问题,请参考以下文章
如何使用javascript修复HTML画布对象中的扭曲/扭曲和剪切图像?