一、消息 为什么会有消息之一说? 因为client和server时间的协议交互是异步的,也就是说不是立即返回的。所有对于请求试处理,一般都会使用消息通知来告诉上层做了什么事情,并且这些事情的结果是什么,比如,应用调用接口去执行setup请求,那么这个请求发送出去之后,client端会监听服务器的返回,得到返回之后,利用消息机制告诉应用层,setup的结果。一般来说,对于VOD应用层需要知道的过程有:setup、play、close。就是说,这些功能或者失败会直接影响到用户是否能够观看影片,比如setup失败,这时影片就不能点播,需要提示用户相应的信息;play失败,这时影片就不能播放,也需要提示用户相应的信息;再如,播放完了,这时服务器断掉连接,也需要提示用户退出。 中间件消息的定义? 中间件中目前一共定义了四类消息,分别是:标准消息、键盘按键消息、遥控器按键消息以及系统消息,这些消息通过各自的消息通道发送给中间件或终端页面进行处理。其中,遥控器按键消息、系统消息都是ipanel自定义的消息。
标准消息: 指中间件终端通过某种协议(如http、rtsp等)与服务器进行交互时产生的一系列标准消息事件,如请求应答正常(200)、无法找到指定位置的资源(404)……这些消息与标准消息值的定义取值一致,一般在中间件内部进行处理,但为了方便用户了解相关状态,中间件按照一定规则将消息值进行转换然后发往页面,以便进行相关提示。 键盘按键消息: 单击键盘上的一个按键时,中间件就会收到一个CHAR型消息,即键盘按键消息。这些消息中间件会发送给页面处理。页面捕获到的消息值就是该键盘字符的ASSIC码。 遥控器按键消息: 单击摇控器上按键时,中间件便会收到遥控按键消息,即irkey消息。其中有些消息中间件会发送给页面进行处理,有些消息在中间件中就被处理销毁掉了,这些在irkey按键消息流程中有具体定义 系统消息: 中间件运行过程中会发生一系统列的功能性操作,如自动搜索、下载skin等等。系统消息就是用于对这些操作的状态结果进行通知,如锁频成功,自动搜索完成,skin下载失败等等,页面可以根据这些消息来提示用户,帮助用户做出判断选择。系统消息分为DVB消息与IPTV消息两个子类型。其中,DVB消息指的是与DVB数据相关的一类消息,其他的均归属为IPTV消息 页面js消息处理: 页面处理消息的步骤是:先注册消息处理函数,一旦有消息就会自动调用消息处理函数。在消息处理函数中通过js语句获取消息的相关参数,对具体信息按照各自的要求进行处理。消息处理完成后,便从消息处理函数中返回,其返回值将做为该类消息流程其下一步处理的依据。 目前,overlay、pagewidget、mainframe、eventframe四种窗口页面具备消息处理能力。 注册消息处理函数:
不同类型的消息拥有不同的消息通道,其注册用的js语句也不相同。注册时使用的处理函数名称是随意的,只要符合js自定义函数的命名规则。在当前的使用中,几类消息都注册了同一个消息处理函数。 1) char消息 document.onkeypress = eventproc1; function eventproc1(eventobject){ …… } 2) irkey消息 document.onirkeypress = eventproc2;或document.onkeydown = eventproc2; 两者同时调用后写的生效。 function eventproc2(eventobject){ …… } 3) system消息/标准消息 document.onsystemevent = eventproc3; function eventproc3(eventobject){ …… }
|