首先需要乙個類去實現websocketconfigurer, 並且指定ws的位址
/**
* represents the web socket configuration.
*/@configuration
@enablewebsocket
public
class
websocketconfig
implements
websocketconfigurer
/** * registers the web socket handlers.
** @param registry web socket handler registry.
*/@override
public
void
registerwebsockethandlers
(websockethandlerregistry registry)
}
接下來需要定義乙個ws請求的handler
/**
* represents websocket handler.
*/@slf4j
@service
public
class
websockethandler
extends
textwebsockethandler
/** * event handler for after connection established event.
** @param session session.
*/@override
public
void
afterconnectionestablished
(websocketsession session)
established"
, session.
getid()
);websocketservice.
put(session.
getid()
, session);}
/** * event handler for text message event.
** @param session session.
* @param message message.
*/@override
protected
void
handletextmessage
(websocketsession session, textmessage message)
with message {}"
, session.
getid()
, message)
; websocketservice.
onmessage
(session.
getid()
, message);}
/** * event handler for transport error event.
** @param session session.
* @param exception exception.
*/@override
public
void
handletransporterror
(websocketsession session, throwable exception)
/** * event handler for after connection closed event.
** @param session session.
* @param closestatus close status.
*/@override
public
void
afterconnectionclosed
(websocketsession session, closestatus closestatus)
/** * configures whether supports partial messages.
*/@override
public
boolean
supportspartialmessages()
}
具體實現handler中的對應策略
/**
* websocket service.
*/@service
@slf4j
public
class
websocketservice
public
void
put(string id, websocketsession websocketsession)
open, now: {}"
, id, sessionmap.
size()
);}public
void
remove
(string sessionid)
closed, now: {}"
, sessionid, sessionmap.
size()
);}catch
(ioexception e)
", sessionid);}
}}void
onmessage
(string sessionid, textmessage message)
wspayloadsession wspayloadsession = sessionmap.
get(sessionid)
;// 這裡可以在wspayloadsession裡加點自己的資料,如type, uuid之類的
sendmessage
(sessionid, gson.
tojson
(wsresponse));
}catch
(jsonsyntaxexception e)
", message.
getpayload()
, e);}
}else
is expired."
, sessionid);}
}public
void
sendmessage
(string sessionid, string message)
@data
private
class
wspayloadsession
}
Spring Websocket 遇到的坑
1 跨域問題 經查閱官方文件springwebsocket 4.1.5版本前預設支援跨域訪問,之後的版本預設不支援跨域,需要設定 setallowedorigins override public void registerwebsockethandlers websockethandlerregi...
React Native Cookie使用指南
web開發中,cookie是乙個常用工具。通常會將使用者與伺服器會話的sessionid儲存在cookie中,用以在請求中標示會話 或者將登入態token值儲存在cookie中,請求中通過cookie值校驗登入態。當我們使用react native開發應用時,是否還能像在web開發中那樣使用cook...
Windows Live Writer 使用指南
一 簡介 二 安裝配置 指定安裝目錄進行安裝,方法如下 mklink d c program files x86 windows live e microsoft windows live mklink d f 我的文件 my weblog posts f 我的博文 三 新增賬戶 1 賬戶 2 cs...