您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)java WebSocket 服務(wù)端如何實(shí)現(xiàn)的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
1.什么是WebSocket
WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議。它實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工(full-duplex)通信——允許服務(wù)器主動(dòng)發(fā)送信息給客戶端。
2.實(shí)現(xiàn)原理
在實(shí)現(xiàn)websocket連線過(guò)程中,需要通過(guò)瀏覽器發(fā)出websocket連線請(qǐng)求,然后服務(wù)器發(fā)出回應(yīng),這個(gè)過(guò)程通常稱為“握手” 。在 WebSocket API,瀏覽器和服務(wù)器只需要做一個(gè)握手的動(dòng)作,然后,瀏覽器和服務(wù)器之間就形成了一條快速通道。兩者之間就直接可以數(shù)據(jù)互相傳送。
3.優(yōu)點(diǎn)
在以前的消息推送機(jī)制中,用的都是 Ajax 輪詢(polling),在特定的時(shí)間間隔由瀏覽器自動(dòng)發(fā)出請(qǐng)求,將服務(wù)器的消息主動(dòng)的拉回來(lái),這種方式是非常消耗資源的,因?yàn)樗举|(zhì)還是http請(qǐng)求,而且顯得非常笨拙。而WebSocket 在瀏覽器和服務(wù)器完成一個(gè)握手的動(dòng)作,在建立連接之后,服務(wù)器可以主動(dòng)傳送數(shù)據(jù)給客戶端,客戶端也可以隨時(shí)向服務(wù)器發(fā)送數(shù)據(jù)。
具體代碼如下所示:
package org.fh.plugins.ChatServer; import java.net.InetSocketAddress; import java.net.UnknownHostException; import org.java_websocket.WebSocket; import org.java_websocket.framing.Framedata; import org.java_websocket.handshake.ClientHandshake; import org.java_websocket.server.WebSocketServer; /** * 說(shuō)明:websocket服務(wù)端 * 作者:FH Admin * from:fhadmin.cn */ public class ChatServer extends WebSocketServer{ public BulletChatServer(int port) throws UnknownHostException { super(new InetSocketAddress(port)); } public BulletChatServer(InetSocketAddress address) { super(address); /** * 客戶端發(fā)送消息到服務(wù)器時(shí)觸發(fā)事件 */ @Override public void onMessage(WebSocket conn, String message){ message = message.toString(); if(null != message && message.startsWith("[video313596790]")){ this.userjoin(message.replaceFirst("\\[video313596790\\]", ""),conn); }else{ BulletChatServerPlool.sendMessage(message.toString());//向所有在線用戶發(fā)送消息 } public void onFragment( WebSocket conn, Framedata fragment ) { * 用戶加入處理 * @param user public void userjoin(String user, WebSocket conn){ BulletChatServerPlool.addUser(user,conn); //向連接池添加當(dāng)前的連接對(duì)象 * 用戶下線處理 public void userLeave(WebSocket conn){ BulletChatServerPlool.removeUser(conn); //在連接池中移除連接 * 觸發(fā)連接事件 public void onOpen( WebSocket conn, ClientHandshake handshake ) {} * 觸發(fā)關(guān)閉事件 public void onClose( WebSocket conn, int code, String reason, boolean remote ) { userLeave(conn); * 觸發(fā)異常事件 public void onError( WebSocket conn, Exception ex ) { if( conn != null ) {} public void onStart() {} }
------------------------------------------------------------------自定義表單
28. 定義模版:拖拽左側(cè)表單元素到右側(cè)區(qū)域,編輯表單元素,保存表單模版
29. 表單模版:編輯維護(hù)表單模版,復(fù)制表單模版,修改模版類型,預(yù)覽表單模版
30. 我的表單:選擇表單模版,編輯表單規(guī)則,是否上傳圖片、附件、開啟富文本、掛靠流程開關(guān)等
31. 表單數(shù)據(jù):從我的表單進(jìn)去可增刪改查表單數(shù)據(jù),修改表單規(guī)則
32. 掛靠記錄:記錄表單數(shù)據(jù)和流程實(shí)例ID關(guān)聯(lián)記錄,可刪除
感謝各位的閱讀!關(guān)于“java WebSocket 服務(wù)端如何實(shí)現(xiàn)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。