java?WebSocket?服務(wù)端實現(xiàn)代碼
1.什么是WebSocket
WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議。它實現(xiàn)了瀏覽器與服務(wù)器全雙工(full-duplex)通信——允許服務(wù)器主動發(fā)送信息給客戶端。
2.實現(xiàn)原理
在實現(xiàn)websocket連線過程中,需要通過瀏覽器發(fā)出websocket連線請求,然后服務(wù)器發(fā)出回應(yīng),這個過程通常稱為“握手” 。在 WebSocket API,瀏覽器和服務(wù)器只需要做一個握手的動作,然后,瀏覽器和服務(wù)器之間就形成了一條快速通道。兩者之間就直接可以數(shù)據(jù)互相傳送。
3.優(yōu)點
在以前的消息推送機制中,用的都是 Ajax 輪詢(polling),在特定的時間間隔由瀏覽器自動發(fā)出請求,將服務(wù)器的消息主動的拉回來,這種方式是非常消耗資源的,因為它本質(zhì)還是http請求,而且顯得非常笨拙。而WebSocket 在瀏覽器和服務(wù)器完成一個握手的動作,在建立連接之后,服務(wù)器可以主動傳送數(shù)據(jù)給客戶端,客戶端也可以隨時向服務(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; /** * 說明: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ù)器時觸發(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)前的連接對象 * 用戶下線處理 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. 表單模版:編輯維護表單模版,復(fù)制表單模版,修改模版類型,預(yù)覽表單模版
30. 我的表單:選擇表單模版,編輯表單規(guī)則,是否上傳圖片、附件、開啟富文本、掛靠流程開關(guān)等
31. 表單數(shù)據(jù):從我的表單進去可增刪改查表單數(shù)據(jù),修改表單規(guī)則
32. 掛靠記錄:記錄表單數(shù)據(jù)和流程實例ID關(guān)聯(lián)記錄,可刪除
到此這篇關(guān)于java WebSocket 服務(wù)端代碼的文章就介紹到這了,更多相關(guān)java WebSocket 服務(wù)端內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實現(xiàn)獲取前、后N天日期的函數(shù)分享
本文給大家分享的是使用java實現(xiàn)的獲取當(dāng)前日期前后N天的函數(shù),非常的簡單實用,有需要的小伙伴可以參考下。2015-03-03ActiveMQ結(jié)合Spring收發(fā)消息的示例代碼
這篇文章主要介紹了ActiveMQ結(jié)合Spring收發(fā)消息的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10springboot讀取yml文件中的list列表、數(shù)組、map集合和對象方法實例
在平時的yml配置文件中,我們經(jīng)常使用到配置基本數(shù)據(jù)類型的字符串,下面這篇文章主要給大家介紹了關(guān)于springboot讀取yml文件中的list列表、數(shù)組、map集合和對象的相關(guān)資料,需要的朋友可以參考下2023-02-02詳細聊聊Spring MVC重定向與轉(zhuǎn)發(fā)
大家應(yīng)該都知道請求重定向和請求轉(zhuǎn)發(fā)都是web開發(fā)中資源跳轉(zhuǎn)的方式,這篇文章主要給大家介紹了關(guān)于Spring MVC重定向與轉(zhuǎn)發(fā)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2021-09-09