java WebSocket 服務端實現代碼

1.什麼是WebSocket

  WebSocket協議是基於TCP的一種新的網絡協議。它實現瞭瀏覽器與服務器全雙工(full-duplex)通信——允許服務器主動發送信息給客戶端。

2.實現原理

  在實現websocket連線過程中,需要通過瀏覽器發出websocket連線請求,然後服務器發出回應,這個過程通常稱為“握手” 。在 WebSocket API,瀏覽器和服務器隻需要做一個握手的動作,然後,瀏覽器和服務器之間就形成瞭一條快速通道。兩者之間就直接可以數據互相傳送。 

                     

3.優點

  在以前的消息推送機制中,用的都是 Ajax 輪詢(polling),在特定的時間間隔由瀏覽器自動發出請求,將服務器的消息主動的拉回來,這種方式是非常消耗資源的,因為它本質還是http請求,而且顯得非常笨拙。而WebSocket 在瀏覽器和服務器完成一個握手的動作,在建立連接之後,服務器可以主動傳送數據給客戶端,客戶端也可以隨時向服務器發送數據。

具體代碼如下所示:

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服務端
 * 作者: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);
    /**
     * 客戶端發送消息到服務器時觸發事件
     */
    @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());//向所有在線用戶發送消息
        }
    public void onFragment( WebSocket conn, Framedata fragment ) {
    
     * 用戶加入處理
     * @param user
    public void userjoin(String user, WebSocket conn){
        BulletChatServerPlool.addUser(user,conn);                            //向連接池添加當前的連接對象
     * 用戶下線處理
    public void userLeave(WebSocket conn){
        BulletChatServerPlool.removeUser(conn);                                 //在連接池中移除連接
     * 觸發連接事件
    public void onOpen( WebSocket conn, ClientHandshake handshake ) {}
     * 觸發關閉事件
    public void onClose( WebSocket conn, int code, String reason, boolean remote ) {
        userLeave(conn);
     * 觸發異常事件
    public void onError( WebSocket conn, Exception ex ) {
        if( conn != null ) {}
    public void onStart() {}
}

——————————————————————自定義表單
28. 定義模版:拖拽左側表單元素到右側區域,編輯表單元素,保存表單模版
29. 表單模版:編輯維護表單模版,復制表單模版,修改模版類型,預覽表單模版
30. 我的表單:選擇表單模版,編輯表單規則,是否上傳圖片、附件、開啟富文本、掛靠流程開關等
31. 表單數據:從我的表單進去可增刪改查表單數據,修改表單規則
32. 掛靠記錄:記錄表單數據和流程實例ID關聯記錄,可刪除

到此這篇關於java WebSocket 服務端代碼的文章就介紹到這瞭,更多相關java WebSocket 服務端內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: