本系列文章詳細介紹使用 .net core 和 WPF 開發 升訊威線上客服與營銷系統 的過程。本產品已經成熟穩定並投入商用。
線上演示環境:https://kf.shengxunwei.com 注意:演示環境僅供演示交流與評估,不保證 7x24 小時可用。
對於線上客服與營銷系統,對瀏覽器的相容性和支援至關重要。我在設計之初,就考慮了這個問題,訪客端必須支援 IE8 以上的所有PC端和移動端瀏覽器。並且能夠根據瀏覽器的片本,自動切換不同的能信方式,始終選擇最優的方式與服務端通訊。
此外,還需要考慮到對網路的波動的相容,訪客所使用的網路五花八門,使用手機時,APP隨時會被切換到後臺導致中斷網路,或者訪客本身所處的車庫、電梯、郊外網路不佳,時斷時續。系統必須能夠合理的處理這些情況,做到:
- 不中斷會話
- 不丟失訊息。
這裡存在幾個技術難點需要注意:
- IE8 和 IE9 不支援 WebSocket 通訊,只能降級使用 Http Ajax 請求。
- 短時間的網路中斷,再次連線時,不可認為是新會話,必須能夠接著進行未完成的會話。
- 訪客端頁面的排版佈局,必須完全相容 IE8 和 IE9,做到美觀一致。
本文我將詳細的解釋這些問題,以及如何實現對 IE8 的完全完美的相容。
訪客端在 IE8 下的效果:
客服端與使用 IE8 的訪客進行交流:
首先判斷使用者的瀏覽器版本
首先我們能過 User-Agent 判斷訪客所使用的瀏覽器。
User-Agent通常格式:
Mozilla/5.0 (平臺) 引擎版本 瀏覽器版本號
IE8 的 User-Agent:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)
IE9 的 User-Agent:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
我們可以通過 JavaScript 從使用者的瀏覽器中得到 User-Agent
var ua = navigator.userAgent;
獲得 User-Agent 之後,我們通過對內容的判斷,就很容易知道使用者使用的瀏覽器版本,從而為後續的工作做準備。
從 WebSocket 降級到 HTTP Ajax
當我們判斷用使用者的瀏覽器不支援 WebSocket 時,就需要對通訊方式進行降級,我們使用 XMLHttpRequest 物件進行 HTTP 非同步通訊。
XMLHttpRequest 能夠:
- 在不重新載入頁面的情況下更新網頁
- 在頁面已載入後從伺服器請求資料
- 在頁面已載入後從伺服器接收資料
- 在後臺向伺服器傳送資料
通過一行簡單的 JavaScript 程式碼,我們就可以建立 XMLHttpRequest 物件。
var xhr = new XMLHttpRequest();
該建構函式用於初始化一個 XMLHttpRequest 例項物件。在呼叫下列任何其他方法之前,必須先呼叫該建構函式,或通過其他方式,得到一個例項物件。
XMLHttpRequest 有一個 onreadystatechange 。它的值 (state_Change) 是一個函式的名稱,當 XMLHttpRequest 物件的狀態發生改變時,會觸發此函式。狀態從 0 (uninitialized) 到 4 (complete) 進行變化。在狀態為 4 時,我們執行程式碼進行通訊。
程式碼示例:
var xmlhttp;
function loadXMLDoc(url)
{
xmlhttp=new XMLHttpRequest();
if (xmlhttp!=null)
{
xmlhttp.onreadystatechange=state_Change;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
else
{
alert("Your browser does not support XMLHTTP.");
}
}
function state_Change()
{
if (xmlhttp.readyState==4)
{// 4 = "loaded"
if (xmlhttp.status==200)
{// 200 = OK
// ...our code here...
}
else
{
alert("Problem retrieving XML data");
}
}
}
我們只需要在 xmlhttp.status 狀態程式碼為 200 時,處理從伺服器返回的資料即可。
本文對客服系統如何相容 IE8 進行了簡要的介紹,在接下來的文章中,我將具體解構服務端程式的結構和設計、客服端程式的結構和設計,敬請關注。
線上演示環境:https://kf.shengxunwei.com 注意:演示環境僅供演示交流與評估,不保證 7x24 小時可用。
聯絡QQ: 279060597
聯絡E-mail:C5118@outlook.com