最近在做一个工作,需要网页端实时显示手机端内容,如果手机因各种原因的断开(包括断网),网页会回到初始页,支持多个网页和多个手机的一对一的连接。
目前的方法是,使用 python 的 twisted 实现的,但总会出现各种原因,比如:
另外,性能不是问题,同时使用的就几个设备。只是想提供更好的体验效果 有更好的方法实现吗?
javascript , python , Go 实现的方法?请大家指导一二。
毕竟 simple is better 。
1
oglop 2016-04-23 09:17:42 +08:00
这是要做 airdroid 么
|
3
ljcarsenal 2016-04-23 09:26:19 +08:00
网页显示手机上的什么内容?是手机上的网页还是类似手机助手那种显示截屏的
|
4
JhOOOn OP @ljcarsenal 截屏
|
5
pimin 2016-04-23 09:49:49 +08:00 via Android
不清楚业务模式,不懂编程,请允许我 YY 下:
我推测是:手机装了 APP ,服务器时时响应手机连接,收到消息并通过网页展示。网页和服务器不是在一起么? 我觉得他们之间并不需要什么通信,服务器收到消息可以加上一个时间标签写入消息池。 网页服务从消息池读取消息,如果当前时间和消息的时间标签差大于 1 秒就判定为离线。 我觉得重点是前端,网页时时更新内容,能带来更好的体验,同时也是最困难的部分。 网页和手机相互识别目的是什么。。 |
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 |
7
JhOOOn OP @pimin 网页端和手机端是一对一的,会有好几个不同的网页端和手段, eg : [( PC1 , Phone1 ),( PC2 , Phone2 ),。。] 。你说的大于 1 秒就判定离线会出现这样的情况:手机每隔几秒发送一个,就需要不断的重新建立连接,所以这里需要保存一个长连接,因为重新建立连接是很费资源的。
|
8
learnshare 2016-04-23 11:12:57 +08:00
github openstf/stf
|
9
chinuno 2016-04-23 11:28:14 +08:00 via Android
Websocket ?
|
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 做的。 |
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 的) |
12
gamexg 2016-04-23 13:50:05 +08:00 via Android 1
|
13
gamexg 2016-04-23 14:03:03 +08:00 via Android
轮询中断可能是被 android 系统给关闭了。
说一个在网上没公开的 android 长连接推送保持的办法, android 下唯一可以保证休眠下也可工作的定时器是 AlarmManager ,但是厂家都做了各种限制,已经非常不可靠了。 找到了一个奇怪的做法:用来做到长连接心跳保持,由服务器端发起心跳来定时唤醒客户端来实现心跳及定时器功能。这种方法可以解决 AlarmManager 频率被限制的问题。 另外建议包名包含 gps 等关键字,反编译 zte 的系统,发现有一个白名单, qq 、微信、 gps 等 app 可以避免被省电。 |
14
JhOOOn OP |