溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java?WebSocket?服務(wù)端如何實(shí)現(xiàn)

發(fā)布時(shí)間:2022-02-17 09:10:59 來(lái)源:億速云 閱讀:363 作者:小新 欄目:開發(fā)技術(shù)

這篇文章給大家分享的是有關(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ù)互相傳送。 

java?WebSocket?服務(wù)端如何實(shí)現(xiàn)

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ò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI