推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
vZexc0m
V2EX  ›  Python

大家有用 Python 做 websocket 的案例吗?现在要做一个实时弹幕系统或者即使聊天系统。

  •  
  •   vZexc0m · Jul 18, 2017 · 10406 views
    This topic created in 3405 days ago, the information mentioned may be changed or developed.
    现在想用 gevent-websocket 或者 tornado 做,请问有相关的例子或教程吗?或者提供一下后端设计思路。
    26 replies  •  2019-07-24 00:11:39 +08:00
    pyengwoei
    pyengwoei
    Jul 18, 2017
    1
    我有个项目,用 Python 抓过 websocket 的数据
    zhengxiaowai
    zhengxiaowai
    Jul 18, 2017
    2
    tornado 自带 websocket 特别简单,以前用 websocket 做过一个实时日志
    wwqgtxx
    wwqgtxx
    Jul 18, 2017 via iPhone
    3
    直接用 socket.io 会简单很多
    mytsing520
    mytsing520
    PRO
    Jul 18, 2017❤️1
    4
    http://tu.dog
    timwei
    timwei
    Jul 18, 2017❤️1
    5
    简单聊天系统的架构: 起一个 Web 服务、一个 WebSocket 服务、一个 database

    基本上是用 database 做服务间的数据共享,我是用 Redis

    用户透过 Web 服务做验证、取得大厅或房间数据

    从大厅进入房间后,渲染 WebSocket 的客端 JS 代码,带用户 Token 联接 WebSocket 服务
    sanmmmm
    sanmmmm
    Jul 18, 2017
    6
    个人项目用过  flask + socketio,感觉还行.
    lolizeppelin
    lolizeppelin
    Jul 18, 2017 via Android
    7
    抄 openstack 的 vnc 服务
    awanabe
    awanabe
    Jul 18, 2017
    8
    @sanmmmm flask + socketio 是怎么部署的,uwsgi 对 socketio 不友好。。好像只能用 gevent
    arischow
    arischow
    Jul 18, 2017
    9
    Flask-SocketIO 不错
    NaVient
    NaVient
    Jul 18, 2017
    10
    弹幕系统类似全站广播 用 rabbitmq stomp+ sockjs 做很容易的
    fy
    fy
    Jul 18, 2017❤️1
    11
    tornado 或 aiohttp:原生 ws
    sockjs + tornado:比较稳的方案
    flask:在 tornado 或 gevent 上跑 flask

    一个老早前写的例子:
    https://github.com/fy0/chat

    我是万年 tornado 用户,现在在考虑转 aiohttp。
    maxxxxx
    maxxxxx
    Jul 18, 2017
    12
    就用 gevent-websocket 起了服务之后在 rerequest 里面取 wsgi.websocket 就好啦
    sanmmmm
    sanmmmm
    Jul 18, 2017
    13
    @awanabe 挺早之前写的,忘了是用的哪个容器了.f lask 插件就哪个f lask-socketio
    caniuse
    caniuse
    Jul 18, 2017
    14
    多少用户同时在线??
    vZexc0m
    vZexc0m
    OP
    Jul 19, 2017
    15
    @maxxxxx 这个怎么取得用户信息和监控 websocket 的连接与关闭
    vZexc0m
    vZexc0m
    OP
    Jul 19, 2017 via Android
    16
    @timwei 我想知道是怎么做的数据共享,还有 socket 怎么带 token。
    timwei
    timwei
    Jul 20, 2017
    17
    1. 两个服务共用一个数据库
    2. send()的时候带上 token 即可
    vZexc0m
    vZexc0m
    OP
    Jul 20, 2017
    18
    @timwei 感谢回复。我想的是用户通过一个短连接发送消息存入数据库,然后这个长连接能够实时获取用户发送的消息,然后发送给客户端。请问有什么好的实现方式吗
    timwei
    timwei
    Jul 20, 2017
    19
    @vZexc0m
    "送消息存入数据库"、"服务推送到各客户端" 都是通过 WebSocket 的连接

    客端来看,分别对应到 send()跟 onmessage()

    服务端来看,当客端 send()消息来时,存入数据库,并且对每个连接的客端推送消息的内容

    流程整体会是
    1. 建立 WebSocket 连接
    2. 客端透过 WebSocket 的 send()方法发送消息到服务端
    3. 服务端将消息存入数据库后,推送消息到各个客端
    4. 客端触发 onmessage 的回调,将推送内容显示
    vZexc0m
    vZexc0m
    OP
    Jul 20, 2017
    20
    @timwei 感谢!如果我需要实现两个人的即使通讯,有什么好的思路吗.
    KgM4gLtF0shViDH3
    KgM4gLtF0shViDH3
    Jul 20, 2017
    21
    django + channels
    newbie269
    newbie269
    Jul 25, 2017
    22
    楼主开始动手了吗?打算开源吗?想一起参与
    vZexc0m
    vZexc0m
    OP
    Jul 27, 2017
    23
    @willhunger 正在写 用的 tornado.websocket,开源的话 感觉代码太烂,拿不出手
    davidshao
    davidshao
    Jul 27, 2017
    24
    @mytsing520。。。过分》。。我微博被强制销户了...土狗怎么登录=。=
    newbie269
    newbie269
    Jul 27, 2017
    25
    @vZexc0m #23 好吧,那楼主加油哦
    chitanda
    chitanda
    Jul 24, 2019 via Android
    26
    线上服务,流量大的话还是慎用吧,七牛欢迎你
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4441 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 08:29 · PVG 16:29 · LAX 00:29 · JFK 03:29
    ♥ Do have faith in what you're doing.