国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

gopush集群推送兼容ie方案

2024-08-27 23:59:27
字體:
供稿:網(wǎng)友

gopush 是金山開源的一個集群推送方案,支持1000k級別的推送,使用golang編寫,性能是杠杠的,下面一小編來看看gopush集群推送兼容ie方案吧.

gopush支持tcp 和 websocket 兩種協(xié)議,在移動端和新瀏覽器中,可以用tcp與websocket來解決實時推送,但是ie9以下版本IE瀏覽器是不支持websocket的,一般都是用長輪訓(xùn)來替換websocket,作者發(fā)話說短期內(nèi)不考慮long-polling方式,這里就用flash的方案解決.

首先需要對gopush進行代碼調(diào)整,以便適應(yīng)flash 的安全策略,在web/http.go里面加入如下代碼:

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

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

  1. func CrossDomain(w http.ResponseWriter, r *http.Request) { 
  2.     hp := `<?xml version="1.0" ?> 
  3.            <!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"
  4.             <cross-domain-policy> 
  5.             <site-control permitted-cross-domain-policies="all"/> 
  6.             <allow-access-from domain="*.pztai.cn"/> 
  7.             <allow-http-request-headers-from domain="*.pztai.cn" headers="*"/>  //Vevb.com 
  8.             </cross-domain-policy>` 
  9.     io.WriteString(w, hp) 

然后在gopush下邊建立新的文件夾flash,建立main.go,監(jiān)視843端口,如果有請求,就返回crossdomain.xml內(nèi)容,斷開連接即可,最后用as3寫普通的socket代碼連接即可,核心代碼如下:

  1. private function sendHead():void{ 
  2.             //發(fā)送協(xié)議 
  3.             var protocol: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. private function socketGetData(data:ProgressEvent):void{ 
  8.             if(socket.bytesAvailable){ 
  9.                 var msg: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.                 }else if(msg.charAt(0) == '$'){ 
  19.                     var msgArr:Array = msg.split("\r\n"); 
  20.                     var msgString:String = msgArr[1]; 
  21.                     ExternalInterface.call("asCallBack"," " + encodeURI(msgString)); 
  22.                 } 
  23.             } 
  24. }

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 石门县| 安康市| 安西县| 上杭县| 铜梁县| 衡山县| 旺苍县| 凉山| 新昌县| 柯坪县| 万山特区| 弥勒县| 合肥市| 台前县| 山丹县| 拉萨市| 略阳县| 乳山市| 峨眉山市| 阿合奇县| 屏东县| 台中市| 南和县| 梨树县| 本溪| 大名县| 东乌| 思南县| 昭通市| 阜康市| 南昌市| 光泽县| 徐汇区| 察雅县| 汕尾市| 隆尧县| 壤塘县| 英吉沙县| 广元市| 运城市| 太谷县|