基於tomcat的websocket實現中,如果會針對乙個使用者高頻的傳送訊息的情況下,websocket自帶的非同步傳送其實一點卵用都沒有,所以,沒辦法,自己控制websocket的併發傳送嘍,不多說,直接貼**
1.基礎的websocket快取物件,這個玩意兒每乙個使用者進來都會生成乙個
public classwebsocketmessage
public
session getsession
() public void
setsession
(session session
) public
long getroomid
() public void
setroomid
(long roomid) }
2:websocket的實現
@serverendpoint
(value =
"/client/socket/flop/"
)public class
websocket
public static
concurrenthashmap
<
long
, roommessage
>
getroomid_roommessage
() public static
concurrenthashmap
<
long
, eventmessage
>
getevent_eventmessage
() /**
* 建立乙個連線
* @param
session
當前使用者
session
*/@onopen
public void
onopen
(session session
, @pathparam
("userid"
) long userid
)else
catch
(ioexception e) }
}/**
* 收到客戶端訊息後呼叫的方法
* @param
message
客戶端傳送過來的訊息
*/@onmessage
public void
onmessage
(string message
,session session
) throws
ioexception
/*** 給某乙個使用者集合傳送訊息
* @param userids
使用者集合
* @param message
需要傳送的訊息
*/public static void
sendmessage
(set
<
long
> userids,
string message)
catch
(ioexception e)
flopwebsocketmessage.
getlock
().writelock
().unlock
();}
}}
/***
發生錯誤時呼叫
* @param
error
錯誤資訊
*/@onerror
public void
onerror
(throwable error
)/**
* 連線關閉呼叫的方法
*/@onclose
public void
onclose
(session session
)session_userid
.remove
(session
);atomicinteger
.addandget(-1
);system
.out
.println("
連線關閉
:"+userid);}
}注意:
千萬不要在除了onopen方法外使用@pathparam("userid")從連線的鏈結中獲取攜帶的引數,絕對回給你意想不到的驚喜
基於Java的快速排序
快速排序 基本思想 快速排序就是通過將乙個陣列分為兩個子陣列,然後通過遞迴呼叫自身為每乙個字陣列進行快速排序實現 通常劃分關鍵字 基準元素 的標準 第乙個元素或者最後乙個元素 author wanglong 2016 9 24 下午2 18 29 public class quicksort els...
基於java的快速排序
因為上次面試師兄讓我上機寫個快排的演算法,我沒有寫出來,很尷尬,今天把快排實現了一遍,以後遇到就不會掉這個坑了。package testt public class fastsort int start 0 int end a.length 1 sort a,start,end for int i ...
基於ArcGIS的Java應用開發
綜覽 what is the web adf 什麼是web adf ide integration 整合開發環境整合 adf web controls adf web 控制 common api 普通api overview of tasks and the task framework 綜覽tas...