北京SEO

gopush集群推送兼容ie方案

2019/10/10/17:45:33  阅读:1762  来源:谷歌SEO算法  标签: 夫唯SEO视频教程

gopush 是金山开源的一个集群推送方案,支持1000k级别的推送,使用golang编写,性能是杠杠的,下面一小编来看看gopush集群推送兼容ie方案吧.

gopush支持tcp 和 websocket 两种协议,在移动端和新浏览器中,可以用tcp与websocket来解决实时推送,但是ie9以下版本IE浏览器是不支持websocket的,一般都是用长轮训来替换websocket,作者发话说短期内不考虑long-polling方式,这里就用flash的方案解决.

首先需要对gopush进行代码调整,以便适应flash 的安全策略,在web/http.go里面加入如下代码:

httpServeMux.HandleFunc("/crossdomain.xml", CrossDomain)

然后在web/handle.go加入如下代码:

  1. funcCrossDomain(whttp.ResponseWriter,r*http.Request){
  2. hp:=`<?xmlversion="1.0"?>
  3. <!DOCTYPEcross-domain-policySYSTEM"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
  4. <cross-domain-policy>
  5. <site-controlpermitted-cross-domain-policies="all"/>
  6. <allow-access-fromdomain="*.pztai.cn"/>
  7. <allow-http-request-headers-fromdomain="*.pztai.cn"headers="*"/>//phpfensi.com
  8. </cross-domain-policy>`
  9. io.WriteString(w,hp)
  10. }

然后在gopush下边建立新的文件夹flash,建立main.go,监视843端口,如果有请求,就返回crossdomain.xml内容,断开连接即可,最后用as3写普通的socket代码连接即可,核心代码如下:

  1. privatefunctionsendHead():void{
  2. //发送协议
  3. varprotocol:String="*3\r\n$3\r\nsub\r\n$"+key.length+"\r\n"+key+"\r\n$"+hearbeattime.toString().length+"\r\n"+hearbeattime.toString()+"\r\n";
  4. socket.writeUTFBytes(protocol);
  5. socket.flush();
  6. }
  7. privatefunctionsocketGetData(data:ProgressEvent):void{
  8. if(socket.bytesAvailable){
  9. varmsg:String=socket.readUTFBytes(socket.bytesAvailable);
  10. if(msg.charAt(0)=='+'){
  11. if(!heatbeatTimer.running){
  12. socketok=true;
  13. heatbeatTimer.start();
  14. }
  15. if(reconnectTimer.running){
  16. reconnectTimer.stop();
  17. }
  18. }elseif(msg.charAt(0)=='$'){
  19. varmsgArr:Array=msg.split("\r\n");
  20. varmsgString:String=msgArr[1];
  21. ExternalInterface.call("asCallBack",""+encodeURI(msgString));
  22. }
  23. }
  24. }

广告内容

gopush集群推送兼容ie方案 gopush集群推送兼容ie方案 gopush集群推送兼容ie方案

相关阅读

热门评论

小潘seo 小潘seo

重庆小潘seo博客和你一起学习SEO知识,共同分享SEO优化~

总篇数165

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法