聯絡客服功能在專案中非常難避免。一般有以下三種實現方式:
第一種方式,最low的。實現簡單。可是浪費使用者流量;另外一種方式,接入簡單,功能強大,可是可能須要一定的成本(比方付費);第三種方式,須要一定的開發成本(伺服器託管費用忽略)。
websocket一種在單個 tcp 連線上進行全雙工通訊的協議。來自維基百科websocket通訊協議於2023年被ietf定為標準rfc 6455,並被rfc7936所補充規範,websocketapi被w3c定為標準。
websocket 是獨立的、建立在 tcp 上的協議。和 http 的唯一關聯是使用 http 協議的101狀態碼進行協議切換,使用的 tcp 埠是80。能夠用於繞過大多數防火牆的限制。
websocket 使得client和伺服器之間的資料交換變得更加簡單,同意服務端直接向client推送資料而不須要client進行請求,在 websocket api 中。瀏覽器和伺服器僅僅須要完畢一次握手,兩者之間就直接能夠建立永續性的連線,並同意資料進行雙向傳送。
眼下常見的瀏覽器如 chrome、ie、firefox、safari、opera 等都支援 websocket。同一時候須要服務端程式支援 websocket。
websocket僅僅是一種協議,相似http,因此與語言無關。這裡我使用j**a來做服務端,同一時候提供android和html的client,通過乙個簡單的demo來介紹websocket的使用。接下來的一篇會對websocket進行分析。
這裡我使用 j**a-websocket 這個庫來實現 websocket server。
須要的jar包位於專案的/j**a-websocket/dist/j**a-websocket.jar
位置。效果例如以下:
**例如以下:
public
class
socketserver
extends
websocketserver catch (unknownhostexception e)
inputstreamreader in = new inputstreamreader(system.in);
bufferedreader reader = new bufferedreader(in);
while (true) catch (exception e) }}
public
socketserver(int port)
public
socketserver(inetsocketaddress address)
@override
public
void
onopen(websocket websocket, clienthandshake clienthandshake)
@override
public
void
onclose(websocket websocket, int code, string reason, boolean remote)
@override
public
void
onmessage(websocket websocket, string msg)
@override
public
void
onerror(websocket websocket, exception e)
}e.printstacktrace();
}/**
* 廣播收到訊息
**@param msg
*/private
void
broadcastmessage(string msg) }}
private
static
void
print(string msg)
}
參考:
1. 2.
3.
使用nginx實現websocket的負載均衡
當web應用訪問量過大時,我們就需要做負載均衡,將同乙個網域名稱的請求分散到不同的伺服器上。nginx就可以做到。它可以按照輪詢 ip雜湊 url雜湊 權重等多種方式對後端伺服器做負載均衡。但是分配到不同的機器上後,如果請求是有狀態的,比如有些頁面需要使用者登入之後才能訪問,我們就需要保證單個使用者...
vue專案使用websocket實現資料實時推送
寫了乙個關於工程的專案,關於工地資料的實時監控 1.後端要先寫好資料,將資料傳遞給前端 2.在前端頁面 function else 連線發生錯誤的 方法 websocket.onerror function 連線成功建立的 方法 websocket.onopen function 接收到訊息的 方法...
WebSocket實現原理
websocket同http和https一樣,屬於tcp基礎上的應用層的協議 因此其必然也是存在三次握手四次揮手的過程 一般來說,我們使用的http協議只能由客戶端發起請求,而服務端無法直接主動進行資料推送,這就導致了如果服務端有持續的變化 如聊天室 而客戶端獲取起來較為複雜 如實時性和服務端壓力等...