瀏覽器兼容性:GoEasy推送 支持websocket 和polling兩種鏈接方式,從而能夠支持IE6及其以上的全部版本,同時還支持其它瀏覽器諸如Firefox, Chrome, Safari等等。javascript
支持不一樣的開發語言: GoEasy推送 提供了Restful API接口,不管你的後臺程序用的是哪一種語言均可以經過Restful API來實現後臺實時推送。如: Java , PHP , C#, Ruby, python , C, C++, ASP .NET , Node.js ...php
支持後臺及前臺推送: 後臺用Restful API, 前臺用goeasy.js; 運用十分簡單!html
PHP Web實時消息後臺服務器推送技術-GoEasyjava
下面我介紹一下使用GoEasy的步驟:python
1. 你須要到goeasy官網上註冊一個帳號,並建立一個應用,應用建立好後系統會默認爲它生成兩個key: publish key和subscribe keyweb
2. 前臺實時訂閱及接收瀏覽器
只須要引入goeasy.js,而後調用goeasy的subscribe方法訂閱一個channel便可,訂閱時不管是用publish key仍是subscribe key均可以。經過subscribe的參數 onMessage的回調函數能夠實時接收到消息。服務器
3. 前臺實時推送websocket
仍是須要引入goeasy.js(若是該頁面已經引入了可不在引入),而後調用goeasy的publish方法向已訂閱的channel上推送消息便可,推送時只能用publish key。app
4. 後臺實時推送
調用GoEasy Restful API, 用post方式訪問http://goeasy.io/goeasy/publish, 同時還須要帶上三個必要參數:
appkey: publish key
channel: 你訂閱了的channel
content: 推送內容
就是這麼簡單。
下面我將以前寫的一個小實例貼出來,裏面用了 Java script 在web頁面進行訂閱,推送,接收,以及取消訂閱的例子,裏面的appkey用的是 goeasy官方 的demo 的appkey.
<html> <head> <title>GoEasy Test</title> <script type="text/javascript" src="https://cdn.goeasy.io/goeasy.js"></script> <script type="text/javascript"> if(typeof GoEasy !== 'undefined'){ var goEasy = new GoEasy({ appkey: 'ba821151-e043-4dfb-a954-c73744c8d323', userId:"222", username:"22", onConnected:function(){ console.log("Connect to GoEasy success."); } , onDisconnected:function(){ console.log("Disconnect to GoEasy server."); } , onConnectFailed:function(error){ console.log("Connect to GoEasy failed, error code: "+ error.code+" Error message: "+ error.content); } }); } subscribe(); function subscribe(){ goEasy.subscribe({ channel: 'notification', onMessage: function(message){ console.log('Meessage received:'+message.content); }, onSuccess:function(){ console.log("Subscribe the Channel successfully."); }, onFailed: function(error){ console.log("Subscribe the Channel failed, error code: "+ error.code + " error message: "+ error.content); } }); } function publishMessage(){ goEasy.publish({ channel: 'notification', message: 'You received a new notification', onSuccess:function(){ console.log("Publish message success."); }, onFailed: function(error){ console.log("Publish message failed, error code: "+ error.code +" Error message: "+ error.content); } }); } function unsubscribe(){ goEasy.unsubscribe({ channel:"notification", onSuccess: function(){ console.log("Cancel Subscription successfully."); }, onFailed: function(error){ console.log("Cancel the subscrition failed, error code: "+ error.code + "error message: "+ error.content); } }); } </script> </head> <body> <input type="button" value="publish" onclick="publishMessage()"/> <input type="button" value="unsubscribe" onclick="unsubscribe()"/> <input type="button" value="subscribe" onclick="subscribe()"/> </body> </html>
=subsibe()"/> </body> </html>
require()語句的性能與include()相相似,都是包括並運行指定文件。不一樣之處在於:對include()語句來講,在執行文件時每次都要進行讀取和評估;而對於require()來講,文件只處理一次(實際上,文件內容替換require()語句)。這就意味着若是可能執行屢次的代碼,則使用require()效率比較高。另一方面,若是每次執行代碼時是讀取不一樣的文件,或者有經過一組文件迭代的循環,就使用include()語句。
require的使用方法如:require("myfile.php"),這個語句一般放�php腳本程序的最前面。PHP程序在執行前,就會先讀入require()語句所引入的文件,使它變成PHP腳本文件的一部分。include使用方法和require同樣如:include("myfile.php"),而這個語句通常是放在流程控制的處理區段中。PHP腳本文件在讀到include()語句時,纔將它包含的文件讀取進來。這種方式,能夠把程式執行時的流程簡單化。
incluce在用到時加載
require在一開始就加載
_once後綴表示已加載的不加載
PHP系統在加載PHP程序時有一個僞編譯過程,可以使程序運行速度加快。但incluce的文檔仍爲解釋執行。include的文件中出錯了,主程序繼續往下執行,require的文件出錯了,主程序也停了,因此包含的文件出錯對系統影響不大的話(如界面文件)就用include,不然用require。
require()和include()語句是語言結構,不是真正的函數,能夠像php中其餘的語言結構同樣,例如echo()可使用echo("ab")形式,也可使用echo "abc"形式輸出字符串abc。require()和include()語句也能夠不加圓括號而直接加參數。
include_once()和require_once()語句也是在腳本執行期間包括運行指定文件。此行爲和include()語句及require()相似,使用方法也同樣。惟一區別是若是該文件中的代碼已經被包括了,則不會再次包括。這兩個語句應該用於在腳本執行期間,同一個文件有可能被包括超過一次的狀況下,確保它只被包括一次,以免函數重定義以及變量從新賦值等問題。