V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xuanwu
V2EX  ›  推广

木兰编程语言 0.0.14.8: websocket 聊天演示;部分比较 Python 语法

  •  
  •   xuanwu · 2020-11-08 13:48:45 +08:00 · 710 次点击
    这是一个创建于 1474 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原文:《木兰编程语言 0.0.14.8:websocket 聊天演示;部分比较 Python 语法

    [安装:pip install ulang,用法与例程请见 PyPI。源码位于开源中国注意:必需 python 3.7,源码文件需 UTF-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 语法对比

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

    [余下见原文《木兰编程语言 0.0.14.8:websocket 聊天演示;部分比较 Python 语法》]

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3829 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:57 · PVG 08:57 · LAX 16:57 · JFK 19:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.