构建虚拟茶话会聊天服务器与远程编辑工具
1. 虚拟茶话会聊天服务器
1.1 二次实现需求
首个聊天服务器原型虽能正常运行,但功能有限,主要表现在无法分辨发言者,且不能解析如 say 或 logout 等命令。因此,需要添加用户身份支持(每个用户有唯一名称)和命令解析功能,并使每个会话的行为依赖于其所处状态(刚连接、已登录等),同时要便于扩展。
1.2 基本命令解析
可参照标准库 cmd 模块的 Cmd 类来实现命令解析。由于 Cmd 类只能与 sys.stdin 和 sys.stdout 配合使用,而我们要处理多个流,所以需要一个能处理单行文本的函数或方法。它应拆分出首个单词(即命令),并据此调用相应方法。示例代码如下:
class CommandHandler:
"""
Simple command handler similar to cmd.Cmd from the standard library.
"""
def unknown(self, session, cmd):
session.push('Unknown command: {}s\r\n'.format(cmd))
def handle(self, session, line):
if not line.strip(): re
超级会员免费看
订阅专栏 解锁全文
562

被折叠的 条评论
为什么被折叠?



