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ù)互相傳送?!?/p>

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)文章
打包部署若依(RuoYi)SpringBoot后端和Vue前端圖文教程
若依是一個使用Spring Boot作為后端和Vue.js作為前端的全棧應(yīng)用開發(fā)平臺,下面這篇文章主要給大家介紹了關(guān)于打包部署若依(RuoYi)SpringBoot后端和Vue前端的相關(guān)資料,需要的朋友可以參考下2024-05-05
如何基于springboot-admin實現(xiàn)后臺監(jiān)控
這篇文章主要介紹了如何基于springboot-admin實現(xiàn)后臺監(jiān)控,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04
SpringBoot導(dǎo)出Excel的四種方式小結(jié)
近期接到了一個小需求,要將系統(tǒng)中的數(shù)據(jù)導(dǎo)出為Excel,且能將Excel數(shù)據(jù)導(dǎo)入到系統(tǒng),對于大多數(shù)研發(fā)人員來說,這算是一個最基本的操作了,本文就給大家總結(jié)一下SpringBoot導(dǎo)出Excel的四種實現(xiàn)方式,需要的朋友可以參考下2024-12-12

