用JAVA和Websocket實現實時通信

雜文論 發佈 2022-08-10T05:05:45.668381+00:00

說到websocket你們必定不會陌生,WebSocket是HTML5一種新的協議。它實現了瀏覽器與伺服器全雙工通訊(full-duplex)。一開始的握手須要藉助HTTP請求完成,當瀏覽器和伺服器握手成功後,瀏覽器和伺服器之間就造成了一條快速通道。

說到websocket你們必定不會陌生,WebSocket是HTML5一種新的協議。它實現了瀏覽器與伺服器全雙工通訊(full-duplex)。一開始的握手須要藉助HTTP請求完成,當瀏覽器和伺服器握手成功後,瀏覽器和伺服器之間就造成了一條快速通道。二者之間就直接能夠數據互相傳送。有了websocket, 你們就能夠摒棄以往用輪詢來實現實時通信的方式了。 有了websocket後,應運而生的相關產品也不在少數,選擇也成了最大的問題,在這裡你可能會說「幹嗎用別人的,我能夠本身用原始的開發一個啊」 對此我只想說你真NB,我也很想知道你是如何解決如下問題的:JAVAscript

  1. 你是打算花1個月,2個月仍是1年還實現一個websocket通訊的?若是你說你打算花一個月,那說明兩點,你的技術要上天了(這麼刁的東西你能夠那麼快弄出來還不存在性能問題,除了我現有的膝蓋,請把我下輩子的膝蓋也拿走),貴公司土豪(貴公司對技術的炙熱追求已經達到了行業的巔峰了,看來大家的項目不是很緊嘛,預算挺多嘛,告訴我貴公司的名字我也來鑽研技術,哈哈哈)
  2. Websocket只支持ie10+, chrome, firefox, safari, opera. 不說多了,當前IE9及低版本的用戶群體還有不少,你是怎麼以為這些低版本瀏覽器的實時通信的? 上面兩個問題無非就是涉及到兩方面問題:開發成本和瀏覽器兼容性問題。站在管理者角度來看,都但願儘量多的壓縮開發成本,全部選擇第三方推送服務是眾多企業的一個理性選擇。 選擇產品時須要注意如下幾點:
  3. 代碼結構是否清晰易懂
  4. 消息到達率怎麼樣,數據到達狀況是否可視
  5. 瀏覽器兼容性如何
  6. 產品的穩定性和安全性 好,重點來了,我不去評判其餘產品的優缺點,只給出我對我最終選擇的產品-GoEasy推送做一個單方面的評價。GoEasy推送知足我上面列的全部指標。
  7. 代碼結構是否清晰易懂 GoEasy的代碼分為訂閱和推送兩部分: 訂閱時,只須要三句代碼: a. 引入goeasy.js (文件很是小)

<script type="text/javascript" src="http://cdn.goeasy.io/goeasy.js"></script>java

b. 建立goeasy實例 var goEasy = new GoEasy({appkey: 'appkey'}); c. 訂閱channel. goEasy. subscribe({ channel: 'channel1', onMessage: function(message){ alert('Meessage received:'+message.content);//接收到推送的消息 } }); 推送時,用goeasy提供的restful api來實現,api只須要三個參數便可: URL: http://goeasy.io/goeasy/publish Method: Post Parameters: appkey, channel, content 2. 消息到達率怎麼樣,數據到達狀況是否可視 咱們項目的用戶並發量目前最高在300人的樣子,天天會推送30條消息的樣子,每條消息的到達狀況均可以在goeasy後台頁面進行查看。至於到達率,咱們項目的對到達率的要求是98%, 就目前來看GoEasy應該是100%的到達率。 3. 瀏覽器兼容性如何 除了經常使用的瀏覽器chrome, firefox, safari, opera外還支持IE 6到IE11的版本,低版本IE瀏覽器GoEasy採用的是polling的方式。GoEasy在兼容性這方面作的很不錯。 4. 產品的穩定性和安全性 穩定性的斷定:項目已經持續運行了4個月了,沒有出現過消息推不出或接收不到的狀況。 安全性的斷定:GoEasy在安全控制方面主要是經過appkey來控制,建立好app後系統會生成兩個key,一個既能夠用來接收又能夠用來推送,另外一個只能夠用來接收。因此用戶能夠選擇性的暴露你的key. 這樣輕鬆用JAVA實現客戶端與伺服器端的實時通訊了

關鍵字: