stomp - How set the nativeHeaders to Spring Java SockJS client on CONNECT frame -


i have implemented java sockjs client websocket on stomp using spring famework 4.3.2 actually. javascript client create nativeheaders java client dont create.

java client:

standardwebsocketclient websocketclient = new standardwebsocketclient(); list<transport> transports = new arraylist<>(2); transports.add(new websockettransport(websocketclient)); sockjsclient sockjsclient = new sockjsclient(transports);            websocketstompclient stompclient = new websocketstompclient(sockjsclient); stompclient.setmessageconverter(new simplemessageconverter()); stompclient.settaskscheduler(taskscheduler); stompsessionhandlerimp stompsessionhandlerimp = new stompsessionhandlerimp();  websockethttpheaders handshakeheaders = new websockethttpheaders(); handshakeheaders.add("tokengroup", "192:168:99:3::demo"); handshakeheaders.add("targetnickname", "null_borrar");        stompclient.connect(stompurlendpoint.tostring(), handshakeheaders, stompsessionhandlerimp, new object[0]); 

javascript:

var = "192:168:99:3::demo"; var targetnickname = ""; stompclient.connect({tokengroup:from, targetnickname: targetnickname}, function(frame) { ... } 

in server side, use implementation of channelinterceptoradapter see output. javascript client include tokengroup , targetnickname nativeheaders.

java client websocket upgrade handshake:

request.getheaders(): {origin=[localhost:8080], sec-websocket-key=[tvfgflo2od6obtckw/y1ng==], connection=[upgrade], sec-websocket-version=[13], host=[localhost:8080],  upgrade=[websocket], **targetnickname=[null_borrar], tokengroup=[192:168:99:3::demo]**} 

java client websocket connect stomp message:

message: genericmessage [payload=byte[0], headers={simpmessagetype=connect, stompcommand=connect, **nativeheaders={heart-beat=[10000,10000], accept-version=[1.1,1.2]}**, simpsessionattributes={ip=/127.0.0.1:53640}, simpheartbeat=[j@907d80, simpsessionid=2c150f9d47504b76a896ada101e8e1bc}] 

javascript client websocket upgrade handshake:

request.getheaders(): {origin=[http://localhost:3000], sec-websocket-key=[slszkcofkgafzyxsadbzlw==],  user-agent=[mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, gecko) chrome/52.0.2743.116 safari/537.36], connection=[upgrade], sec-websocket-version=[13], host=[localhost:8080], accept-encoding=[gzip, deflate, sdch], dnt=[1], pragma=[no-cache], upgrade=[websocket], sec-websocket-extensions=[permessage-deflate; client_max_window_bits], cache-control=[no-cache], accept-language=[en-us,en;q=0.8]} 

javascript client websocket connect stomp message:

message: genericmessage [payload=byte[0], headers={simpmessagetype=connect, stompcommand=connect, **nativeheaders={tokengroup=[192:168:99:4::demo], targetnickname=[], accept-version=[1.1,1.0], heart-beat=[10000,10000]}**, simpsessionattributes={ip=/127.0.0.1:55150}, simpheartbeat=[j@915deb, simpsessionid=g3pcbfvj}] 

you can see java client have nativeheaders={heart-beat=[10000,10000], accept-version=[1.1,1.2]} , javacript have nativeheaders={tokengroup=[192:168:99:4::demo], targetnickname=[], accept-version=[1.1,1.0], heart-beat=[10000,10000]}

how can include "tokengroup" java client? normal java , javascript client work different?

solution:

you need use overloaded method include stompheaders.

websockethttpheaders handshakeheaders = new websockethttpheaders(); stompheaders connectheaders = new stompheaders(); connectheaders.add("tokengroup", "192:168:99:3::demo"); stompclient.connect(stompurlendpoint.tostring(), handshakeheaders, connectheaders, stompsessionhandlerimp, new object[0]); 

now produce next in server:

message: genericmessage [payload=byte[0], headers={simpmessagetype=connect, stompcommand=connect, nativeheaders={tokengroup=[192:168:99:3::demo], heart-beat=[10000,10000], accept-version=[1.1,1.2]}, simpsessionattributes={ip=/127.0.0.1:57773}, simpheartbeat=[j@1ac7a81, simpsessionid=a1648581b94d422e8b88258efad36ffb}] 

nativeheader include tokengrouo header on connect.


Comments

Popular posts from this blog

javascript - Thinglink image not visible until browser resize -

firebird - Error "invalid transaction handle (expecting explicit transaction start)" executing script from Delphi -

mongodb - How to keep track of users making Stripe Payments -