网页实时显示手机端内容 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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
JhOOOn
V2EX    Python

网页实时显示手机端内容

  •  
  •   JhOOOn 2016-04-23 09:12:37 +08:00 5390 次点击
    这是一个创建于 3458 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在做一个工作,需要网页端实时显示手机端内容,如果手机因各种原因的断开(包括断网),网页会回到初始页,支持多个网页和多个手机的一对一的连接。

    目前的方法是,使用 python 的 twisted 实现的,但总会出现各种原因,比如:

    1. 出现手机断开,网页没有收到消息,没有回到初始页
    2. 莫名其妙的出现断开,
    3. 网页与服务器通信是通过长轮询实现的,有更好的方法实现网页和服务器的交互吗?
    4. 目前使用的网页和手机相互识别使用的是输入一个 id 号,有更好的方法吗?
    5. 对 twisted 理解不够透彻

    另外,性能不是问题,同时使用的就几个设备。只是想提供更好的体验效果 有更好的方法实现吗?

    Javascript , python , Go 实现的方法?请大家指导一二。

    毕竟 simple is better 。

    14 条回复    2016-04-23 17:13:25 +08:00
    oglop
        1
    oglop  
       2016-04-23 09:17:42 +08:00
    这是要做 airdroid 么
    JhOOOn
        2
    JhOOOn  
    OP
       2016-04-23 09:21:10 +08:00
    @oglop 不是的,我刚看了下你说的,就做其中一个‘小屏幕映射到大屏幕’这种功能。
    ljcarsenal
        3
    ljcarsenal  
       2016-04-23 09:26:19 +08:00
    网页显示手机上的什么内容?是手机上的网页还是类似手机助手那种显示截屏的
    JhOOOn
        4
    JhOOOn  
    OP
       2016-04-23 09:34:32 +08:00
    @ljcarsenal 截屏
    pimin
        5
    pimin  
       2016-04-23 09:49:49 +08:00 via Android
    不清楚业务模式,不懂编程,请允许我 YY 下:
    我推测是:手机装了 APP ,服务器时时响应手机连接,收到消息并通过网页展示。网页和服务器不是在一起么?
    我觉得他们之间并不需要什么通信,服务器收到消息可以加上一个时间标签写入消息池。
    网页服务从消息池读取消息,如果当前时间和消息的时间标签差大于 1 秒就判定为离线。
    我觉得重点是前端,网页时时更新内容,能带来更好的体验,同时也是最困难的部分。

    网页和手机相互识别目的是什么。。
    Weakdancer
        6
    Weakdancer  
       2016-04-23 09:50:13 +08:00
    参考 trinusvr
    http://trinusvr.com/
    http://trinusvr.com/help/setup-guide/

    其中指出通过 usb 建立局域网( Usb Tethering )的方式是延迟最小的。
    https://support.google.com/nexus/answer/2812516?hl=en
    JhOOOn
        7
    JhOOOn  
    OP
       2016-04-23 10:05:27 +08:00
    @pimin 网页端和手机端是一对一的,会有好几个不同的网页端和手段, eg : [( PC1 , Phone1 ),( PC2 , Phone2 ),。。] 。你说的大于 1 秒就判定离线会出现这样的情况:手机每隔几秒发送一个,就需要不断的重新建立连接,所以这里需要保存一个长连接,因为重新建立连接是很费资源的。
    learnshare
        8
    learnshare  
       2016-04-23 11:12:57 +08:00
    github openstf/stf
    chinuno
        9
    chinuno  
       2016-04-23 11:28:14 +08:00 via Android
    Websocket ?
    matsuijurina
        10
    matsuijurina  
       2016-04-23 11:43:12 +08:00   1
    我为了某个产品发布活动做过类似事情,网页端投影到大屏幕,客户的手机端 app 是用 phonegap 包装起来的 framerjs 动态原型(当然用其它的 js 框架,比如 ionic 、 framework7 之类的也差不多)。网页端同样也是 framerjs 。所有需要同步的操作事件都绑定 websocket 与后端通讯,后端是用 socket.io 做的。实现的效果大概是,我在大屏幕上演示 app 的某个功能,客户的手机端 app 显示的内容实时跟着动,如果开启双向同步权限,客户的操作也能反映到大屏幕上。说白了就是把手游的那一套搬到 app 上了。

    在做这个方案之前,也想过录屏直播、定期截屏等等方案,但最后选定的这个方案是最节省资源,同步效率最高的,不在会场的外地客户也同样可以有一致的体验。

    和楼主不同的地方,我们这个是一对多或多对一,楼主的需求是一对一的。客户端和演示端的认证,我们是用 JWT 的 Token 配合 Socket.io 做的。
    2225377fjs
        11
    2225377fjs  
       2016-04-23 12:05:45 +08:00   2
    手机通过 TCP 长连接把截屏信息发送到服务器(比如说是一秒钟截屏一次之类的),然后服务器再将截屏的图片数据推送到 web 上面做显示。。。?
    手机断开服务器不知道的问题,如果是移动网络环境的话,建议打开 TCP 的 keepalive ,或者自己做心跳监控。
    服务器向 web 端推送截屏数据可以通过 websocket 这类的方案来做。
    网页和手机相互对应,可以做一个中心的注册管理,手机上线了之后,向注册中心注册自己的信息,然后 web 端可以通过一个列表选择来查看自己想看的手机就好了。。,如果手机下线,直接通知 web 端就好了。


    说这么多,要实现这些关键还得看楼主是否有这些相关的技术积累了, node.js , Python , Go 肯定都能实现。

    (如果楼主这需求是很重要的话,我可以远程和你一起做做玩玩,服务器方面的我可以包办了, html 界面部分你自己做,手机端你自己做,或者也可以给你提供一些关键基础代码,你自己写, python 的)
    gamexg
        12
    gamexg  
       2016-04-23 13:50:05 +08:00 via Android   1
    做过 andriid 和网页同步显示,不过不是截屏显示。资源都是从七牛下载的,只同步摄像机视角等内容。

    使用的 socket.io 做的实时通信, android 通过 socket.io
    实时上报视角等信息, socket.io 直接转发给 web 端。

    socket.io 有现成的 android 库、 python 库。注意一下 soxket. io 0.2 修改了 redis 协议,不兼容与 0.1 。
    当时切换服务器时未锁定版本号,从新安装时变成了 0.2 ,结果 python 库挂了,折腾了一天给 python 库打了个补丁才解决。
    gamexg
        13
    gamexg  
       2016-04-23 14:03:03 +08:00 via Android
    轮询中断可能是被 android 系统给关闭了。

    说一个在网上没公开的 android 长连接推送保持的办法, android 下唯一可以保证休眠下也可工作的定时器是 AlarmManager ,但是厂家都做了各种限制,已经非常不可靠了。
    找到了一个奇怪的做法:用来做到长连接心跳保持,由服务器端发起心跳来定时唤醒客户端来实现心跳及定时器功能。这种方法可以解决 AlarmManager 频率被限制的问题。

    另外建议包名包含 gps 等关键字,反编译 zte 的系统,发现有一个白名单, qq 、微信、 gps 等 app 可以避免被省电。
    JhOOOn
        14
    JhOOOn  
    OP
       2016-04-23 17:13:25 +08:00
    @matsuijurina
    @gamexg
    @2225377fjs
    已感谢,提供了很好的方案,回去尝试,多谢。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2417 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 01:10 PVG 09:10 LAX 18:10 JFK 21:10
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86