范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

用木兰编程语言编写WebSocket聊天服务示例

  【安装:pip install ulang,用法与例程请见 PyPI。源码位于开源中国(文末链接)。 需 python 3.7,源码文件需 UTF-8 编码】
  本周发布木兰编程语言版本 0.0.14.8。将 Python 框架 tornado自带的用 WebSocket 实现聊天的例程改为木兰实现。顺便将该例程涉及的木兰与 Python 语法对比小结,包括本周重现的 super 语法等。1 实例演示
  主要木兰代码如下(完整代码见源码库)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 语法对比
  下面都基于当前对木兰的认识,今后随重现项目进展可能修改必须(否则报错)如碰到形参的关键词为 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

gRPC服务开发和接口测试初探Go之前写过了Grpc服务开发和接口测试初探Java,中间耽搁了一些时间,Go版本的gRPC测试开发实践才有时间学习使用。其中也是由于自己Go语言不够熟悉导致的。之前有段时间想暂时放弃汇量科技实现出海的背后亚马逊云科技都做了什么数字经济正在影响着人们生活和工作的方方面面,对于企业来说同样也如此,当前,随着全球企业数字化转型进程的加快,越来越多的企业都在寻求更加宽广的全球化发展机遇,对于中国企业来说,在近些华为最新一代折叠屏手机大家好,我是小温。近日华为推出一款新代折叠屏手机华为matexs2,作为华为的折叠屏新系列手机,那配置不言而喻绝对满满当当。华为matexs2这次的摄像也是非常厉害了,用上了徕卡四微信NFC功能你知道吗?曾记何时NFC还是高端手机的标配。现在微信也有了,我们大多数人并不是很了解。其实NFC功能很强大,对今天小编就给大家介绍一下。微信开启NFC可以用于数据读写实现便捷安全的支付,还可折叠屏幕新机华为MateXs2首销,Mate40降到冰点新价,福利来袭将于2022年5月6日正式首销华为MateXs2折叠屏在折叠屏幕的过程中,也不会出现折痕凸起的情况。将于2022年5月6日正式首销华为MateXs2折叠屏铰链外部的密封性也很好,避vivoX80系列两款机型到底有啥不同?标准版到底怎么样?一目了然根据近期多个手机评测平台公布的4月手机性能排行榜来看,vivo最新发布的影像旗舰X80系列频频亮相,而其中的标准版更是凭借力压多款高通骁龙8Gen1机型的性能,成为了万众瞩目的焦点一加Nord2T携手天玑1300,索尼IMX766持续输出,国内版不远了自从回归OPPO之后,一加的表现并不是很亮眼,自一加10Pro之后,一加再没有发布任何一款高端影像旗舰,一加Ace虽然也不错,但仅定位中端电竞旗舰,与高端影像旗舰还有一定差距。自从同为顶级旗舰!实测FindX5Pro和iPhone13Pro,夜景视频差异明显近日,一则Q1中国智能手机出货量同比下降17的热点消息上了头条热搜。打开一看,是权威机构StrategyAnalytics给出的数据。(头条热搜Q1中国智能手机出货量同比下降17)iPhone14发布会,最快会在9月6日正式亮相从以往苹果举行秋季发布会时间推算,苹果习惯在9月前两周的周二举行新品发布会,大致能够推算iPhone14发布时间会在9月6日或9月13日举行,而iPhone14预购时间习惯在周五,马斯克会成为世界第一的军火供应商么?符合逻辑的推论,马斯克有能力成为世界第一的军火供应商。因为特斯拉的无人驾驶,核心技术就是识别目标,识别出路上的其他车辆和行人,并且自动躲避。只要改几行代码,把躲避目标变为攻击特定的iPhone电池保养小技巧很多买了iPhone手机的用户都怕电池效率掉很快!又怕到官网换块电池太贵了,如果你不想要电池寿命掉很快的话,就赶紧跟我一起来学习如何保养iPhone手机的电池吧!不会的还不快快学习
筋膜枪UL1647报告办理筋膜枪UL1647要求有哪些?筋膜枪是一种软组织康复工具,通过高频率冲击放松身体的软组织,刺激其本体感觉功能,进而起到有效缓解肌肉紧张的作用,达到止痛的目的。但一般这类产品出口美国化学品MSDS检测报告MSDS检测流程化学品MSDS到底指的是什么?MSDS(MaterialSafetyDataSheet)即化学品安全技术说明书,也可以叫做化学品安全说明书或化学品安全数据说明书。在欧洲国家,材料安意大利食品接触材料D。M。210373测试要求该指令适用于以下定义的塑料材料产品1)塑料和物品及其零件只由塑料构成2)只由塑料组成的多层塑料3)形成密封垫片盖子用的塑料层或塑料涂层但它不适用于其中一层或多层不是塑料制成的材料或日本食品接触材料测试JFSL370日本从第一部真正以食品为对象的法律关于取缔饮食物及其他物品的法律颁布和实施起,其对食品接触材料检测的安全管理和立法,经过百余年的发展,法制不断成熟和完备,形成了由框架性法规食品卫生焖烧杯德国LFGB食品级测试焖烧杯是把食物(特别是汤类)放入杯中,然后注入滚烫的开水,接着把盖子盖起来闷2小时左右,借助杯子保温的功能,使得食物在近似于开水的温度中闷熟。是一种方便经济的烹饪器具。LFGB又称美国FDA注册一。FDA简介美国食品和药物管理局(FoodandDrugAdministration)简称FDA,FDA是美国在健康与人类服务部(DHHS)和公共卫生部(PHS)中设立的执行机构乡村振兴要靠高质量农产品打样农户靠在京东卖羊年增收平均过万生长在宁夏地区唯一的牧区县的盐池滩羊发展距今已有200多年的历史,这是中国品质最好最知名的羊肉之一。然而,很长一段时间,盐池滩羊价格上不去,销售局限在本区域,产业规模不大,农民养着10月28日晚8点戴尔商用直播间与你一起揭秘武林秘籍在你的公司中是不是有这样一群人,他们随叫随到,为你们提供IT服务需求,有效地解决了办公问题,他们就像是江湖中的侠客,武艺超凡,想知道他们是如何练就这一身本领的吗?10月28日晚8点30多万配备全自动空气悬架,ZEEKR001你让那些百万级豪车怎么活?现如今,车圈流行一句话,那就是软件定义汽车,但对于追求操控与舒适性的老司机来说,硬件才是至关重要。比如,相对于驾驶辅助系统,全自动空气悬架带来的操控快感与舒适乘坐感更让他们更兴奋,大湾区金融素养教育公益联盟成立微众银行微粒贷助力反诈宣传10月29日,首届粤港澳大湾区金融素养教育公益联盟正式宣告成立,作为首批联盟成员,微众银行携手南方日报共建防范电信诈骗教育示范基地,微众银行常务副行长黄黎明获邀担任金融素养首席知识李现李承铉张智霖等星店长喊你来京东,一起瓜分百万红包随着澎湃消费热浪如约而至,2021年的京东11。11全球热爱季已全面开启,在10月31日晚8点开始支付尾款后的四小时便累计售出商品超1。9亿件。这样可观的销量,离不开京东对消费者尤