Pushlet的Ajax-pushlet-client.js分析
Ajax-pushlet-client是pushlet的ajax客户端方式,对该JS进行分析后发现,它是采用了面向对象的javascript技术和充分利用XMLHttpRequest对象来实现的HTTP长连接,达到了服务器“推”技术。 1、属性 statusMsg: ‘null’,//状态消息 2、方法 _doRequest (anEvent,aQuery):首先判断是不是出现错误,然后再判断是否需要等待状态,若不需要等待则构建查询字符串。最后调用_getXML(url,PL._onResponse)方法向服务器发出请求,后一个参数为回调方法。 _getWebRoot:获取项目根目录,可以根据实际项目修改 _getXML:以get方式请求URL,用同步或者异步方式 _onResponse(xml):先将xml转变为pushlet事件对象(_rsp2Events),得到多个PushletEvent对象,再调用_onEvent()处理每个事件。 _rsp2Events(xml):取得事件标签(event),然后调用PushletEvent(),可能得到多个PushletEvent对象。 _onEvent(event):处理由服务器端传来的事件,首先判断事件类型,由不同的类型调用不同的处理方法: _addEvent(elm,evType,callback,useCapture):取得elm对象,调用以下三者之一: _doCallback(event,cbFunction):如果指定了回调方法,则调用cbFunction(event),如果没有指定那么调用window.onEvent(event)。 _getObject(obj):获取对象引用,若参数为对象直接返回该对象引用,若为字符串则按ID取得该对象。 PushletEvent(XML):与nl.justobjects.pushlet.Event相对应。其内部方法或属性如下: 将传入xml解析到arr中。 其对外公开方法: heartbeat():实质是调用了PL._doRequest(‘hb’),向后台请求“hb”事件。再被封装成了:p_heartbeat()精简方式。 相似的方法还有: Join:_doRequest(‘join’,PL.NV_P_FORMAT + ‘&’ + PL.NV_P_MODE); joinListen:PL._doRequest(‘join-listen’,query);请求加入同时监听; leave:_doRequest(‘leave’); listen(aSubject):_doRequest(‘listen’,query);按主题监听; publish(aSubject,theQueryArgs):_doRequest(‘publish’,query);按主题发布; subscribe(aSubject,aLabel):_doRequest(‘subscribe’,query);按主题订阅; unsubscribe(aSubscriptionId):_doRequest(‘unsubscribe’,query);按订阅ID退订; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |