需求场景:
当用户浏览一个网页,看到自己喜欢的视频信息时,就点击改视频信息链接,在线观看视频.如果该用户本机没有安装完整版的暴风影音,网页通过JS脚本判定后,自动为用户提供一个下载连接安装暴风MINI版,用户点击安装后,再次点击刚才网页中的视频信息,暴风影音MINI版播放该视频信息.暴风影音MINI版的调起入口来源主要是网页上的视频连接,很多用户没有安装暴风影音MINI版,为了更好的提高用户感受,降低用户的操作环节,产品人员不希望用户安装完成后,还需要再次点击刚才点击的视频,这种衰减可能会直接导致暴风影音MINI版的报活和VV打折扣.
实现思路:
1)用户点击视频链接后,在某个地方记录点击的视频信息.
记录视频信息有多种方式,但此时还没有客户端存在,所以只能考虑存放在指定的服务器上,或者存放在浏览器的Cookie,flash的共享对象,或者是下载安装包的URL中(由安装脚本负责解析并保存在本地某个文件中).
2)客户端安装完成后,首次启动时去预订地点读取视频信息并播放.
客户端安装完成后,可以通过cookie中标识,读取远程服务器的信息,也可以读取用户系统中的目录(包括IE存放cookie的目录).
方案对比:
其实每个方案都能实现这个需求,只不过每个方案都会有缺点,如何扬长避短才是最重要的.目前没有任何一个方案是完美的.
方案1:
通过记录Cookie的方式将用户点击触发的视频信息保存到本地,客户端安装后通过查找本地cookie调起播放。
缺点:
目前客户端读取WIN7,vista系统的IE cookie有困难,不容易实现。
由于各家合作网站的不同,客户端需要知道那些网站的域名,才能查找cookie,适用于点击后页面跳转到暴风主站的方式。(适用面不是很广)
方案2:
通过修改文件名称的方式,将播放视频的ID写入待安装的MINI暴风名称中,例如:http://*****/storm_13000004455.exe的方式。
缺点:
由于点击后知晓用户点击的那个视频,所以需要动态脚本解析这个ID,并将动态生成下载EXE的软连接,所以就要求下载服务由一台动态服务器提供,就不能使用现在的下载服务集群。
如果采用天津双线的机房作下载,带宽费用较高,南北部署服务器需要新申请服务。
由于原有逻辑中需要将暴风安装包通过软连接的方式进行报数的统计,目前的格式为storm_13.exe,所以格式上会有些冲突,需要调节整个数据统计的服务代码(有些研发成本)。
方案3:
通过flash共享对象的方式,通过flash的方式将播放视频的信息写入共享对象,mini暴风安装后调起通过读取共享对象已存在视频信息并播放视频,读取后直接删除该共享对象中的视频信息。由于使用非客户端开发,代码扩展性比较容易。
缺点:
合作模式不单一,需要合作网站同意载入flash,提高了对外合作的难度。
每次启动暴风后,都会调起flash尝试读取共享对象(目前的后播推荐也是使用flash,如果有播放前启动flash的时机,如:"广告,推荐",就可以使用这个方案了)
方案4:
通过session的方式,用户点击后,访问制定域名的一个URL,并提交点击的影视信息ID,服务器动态生成一个sessionID,并保存这个sessionID对应的影视信息ID,客户端安装完毕后首次启动时访问指定的服务,由于域名相同,请求是会附带刚才请求的sessionID,服务段判定后将刚才保存的影视信息ID返回给客户端,客户端播放。
缺点:
使用sessionID进行识别和保存有时间控制,一般是设定在15分钟左右,对于长时间点击后,不安装会有超期和实效的现象。
由于sessionID需要每次动态生成,并保存影视信息,不能承载太大的并发访问请求。
最终方案的选择,我的个人建议是第四种,相对成本低,扩展性高,客户端不用特别大的改动.不过,每个方案都是建议,因为最终的选择权是带这个项目的技术leader,由他们去决定好了.
分享到:
相关推荐
最近的Android项目开发过程中一个问题困扰自己很长时间,Android客户端与服务器交互有几种方式,最常见的就是webservices和json。要在Android手机客户端与pc服务器交互,需要满足下面几种条件:跨平台、传输数据格式...
本实例封装了一个处理安卓客户端与服务器端交互的几个方法,对于中文乱码问题本实例也找到了解决方案.本例可以处理的场景如下: 1.与服务器端交互json数据. 2.Get方式与服务器端交互数据. 3.Post方式与服务器端交互...
Android客户端与服务器数据交互流程.pdf
浅析Java_web程序之客户端和服务器端交互原理.doc
无线点菜系统(客户端和服务器端交互) 无线点菜系统(客户端和服务器端交互)
用Android搭建客户端 手机和服务器交互开发实例 用Android搭建客户端 手机和服务器交互开发实例 用Android搭建客户端 手机和服务器交互开发实例
Android通过get,post方式客户端与服务器端交互实例,一个简单的demo,在客户端中输入参数,传给服务器端并打印出来。
这是一个demo,实现了安卓客服端和struts后台的交互,用json传输数据,是一个简单的例子,struts+hibernate+spring+Android;非常适合新手入门。
android客户端和服务器端交互,实现注册、登陆功能
android客户端连接服务器并交互.zip
Java-web客户端和服务器端交互的原理.doc
Android应用源码之客户端连接服务器并交互实例.zip
讲解netty的服务器和客户端交互的过程,里面有详细注释,适合初学netty者!!!!!!!!!!!!!!!!
php实现服务器与客户端交互,代码类信息 具体实践
Android客户端和服务器端数据交互Demo01.zip,欢迎下载
客户端与服务器端交互
android客户端与服务器进行数据交互,客户端上传数据至服务器,服务器返回值给客户端
anddroid客户端连接服务器并交互实例,非常不错的应用,值得看看
窗口服务器客户端交互,客户端可以向服务器发消息,服务器可以向客户端发消息
Android客户端与服务器端的json数据交互(内含大量知识点),包含文件的上传,文件浏览器等。