Spring Websocket使用指南

2021-10-05 14:51:52 字數 3312 閱讀 2197

首先需要乙個類去實現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...