首页 » PHP教程 » phpwebsocket例程技巧_用木兰编程措辞编写 WebSocket 聊天做事示例

phpwebsocket例程技巧_用木兰编程措辞编写 WebSocket 聊天做事示例

访客 2024-12-08 0

扫一扫用手机浏览

文章目录 [+]

本周发布木兰编程措辞版本 0.0.14.8。
将 Python 框架 tornado自带的用 WebSocket 实现谈天的例程改为木兰实现。
顺便将该例程涉及的木兰与 Python 语法比拟小结,包括本周重现的 super 语法等。

1 实例演示

紧张木兰代码如下(完全代码见源码库)

phpwebsocket例程技巧_用木兰编程措辞编写 WebSocket 聊天做事示例

type 谈天渠道 : tornado.websocket.WebSocketHandler { { 吸收端 = set() 历史 = [] 历史长度 = 200 } func $get_compression_options { // Non-None enables compression with default options. return {:} } func $open { 谈天渠道.吸收端.add($) } func $on_close { 谈天渠道.吸收端.remove($) } func 更新历史() { // 必须指定类 谈天渠道.历史.append() if len(谈天渠道.历史) > 谈天渠道.历史长度 { 谈天渠道.历史 = 谈天渠道.历史[-谈天渠道.历史长度 :] } } func 广播() { logging.info("发到%d个吸收端", len(谈天渠道.吸收端)) for 某吸收端 in 谈天渠道.吸收端 { // TODO: try catch 尚待重现 //try: 某吸收端.write_message() //except: // logging.error("Error sending message", exc_info=True) } } func $on_message(内容) { logging.info("收到: %r", 内容) parsed = tornado.escape.json_decode(内容) = {"id": str(uuid.uuid4()), "body": parsed["body"]} ["html"] = tornado.escape.to_basestring( $render_string("message.html", message=) ) 谈天渠道.更新历史() 谈天渠道.广播() }}2 与例程涉及的 Python 语法比拟

下面都基于当前对木兰的认识,今后随重现项目进展可能修正

phpwebsocket例程技巧_用木兰编程措辞编写 WebSocket 聊天做事示例
(图片来自网络侵删)
必须(否则报错)如碰到形参的关键词为 type,需改为位置形参。
如原始例程中的:

define("port", default=8888, help="run on the given port", type=int)

末了一个形参的 keyword 为 type,恰好是木兰的语法关键词。
因此只能改为位置形参(顺便中文化封装):

func 定义(名称 : str, 默认=nil, 类型=nil, 帮助=nil) { define(名称, 默认, 类型, 帮助)}定义("port", 默认=8888, 帮助="在此端口运行做事", 类型=int)木兰只有静态方法(staticmethod)。
碰到 Python 的 classmethod 时,引用类变量时用类名取代 cls。
见上面的 更新历史 方法。
需 tuple() 初始化元组,见前文先容所有块改为 {},取代 Python 中的冒号class 变 type,用冒号指定类型,包括指定形参类型、超类等注释段用 / /,注释行用 //import 变 usingNone 变 nildef 变 func【本周】super() 变 super【本周】不支持 ,改用列举形参类变量需用{}包围字典初始化 {:}可选self 变 $,见前文先容布局函数用类名而非__init__无参数函数定义时可省略 ()附:代码量统计

紧张部分的代码行数统计,格式为:上次->现在。

木兰代码量 2965 -> 3114编辑器,实现与测试都是木兰代码:432 -> 431 (在为分为前后端实现调研网络做事框架)木兰测试用例,包括部分实用小程序(如井字棋):2533 -> 2683

Python 代码量(木兰实现与测试框架):2594 -> 2612剖析器/语法剖析器.py:1008 -> 1019剖析器/词法剖析器.py:204 -> 207测试/运行所有.py,考验所有木兰测试代码片段:192 -> 194环境.py,定义全局方法:171 -> 172剖析器/语法身分.py,从语法剖析器中提取出来的列举常量:81 -> 82功用/反馈信息.py:65 -> 67测试/unittest/语法树.py,确保天生的语法树与原始版本同等:67 -> 66未变剖析器/语法树.py:202交互.py,交互环境(REPL):138中.py,主程序:74功用/调试赞助.py,:57setup.py, 34剖析器/缺点.py:17测试/unittest/交互.py,交互环境干系测试:28
标签:

相关文章

php与pdo技巧_PHP PDO 简单教程

PHP 5.5 版本之前,我们有用于访问 MySQL 数据库的 mysql_ 命令,但由于安全性不敷,它们终极被弃用。mysql_...

PHP教程 2024-12-09 阅读0 评论0