은 서버에 살고있는 맵입니다.
이것은 응용 프로그램이 필요로하는 것으로 채울 수있는 불투명 (CometD 관점에서)지도입니다.
클라이언트에서 서버로 데이터를 보내려면이 추가 데이터를 핸드 셰이크 메시지에 넣은 다음 BayeuxServer.SessionListener.sessionAdded()
이 호출되면 메시지에서 해당 데이터를 검색하면됩니다.
클라이언트는 다음과 같습니다
BayeuxClient client = ...;
Map<String, Object> extraFields = new HashMap<>();
Map<String, Object> ext = new HashMap<>();
extraFields.put(Message.EXT_FIELD, ext);
Map<String, Object> extraData = new HashMap<>();
ext.put("com.acme", extraData);
client.handshake(extraFields);
extraData.put("token", "foobar");
이 JSON이처럼 보이는 추가 데이터 구조를 생성합니다
그것은 항상
{
"ext": {
"com.acme": {
"token": "foobar"
}
}
}
아주 좋은 방법이 아래에 데이터를 넣어를 com.acme
과 같은 네임 스페이스를 사용하면 CometD 필드 나 다른 확장 프로그램을 사용하지 않아도됩니다. 위의 예에서 필드 예 : token
과 같이 필드를 extraData
안에 입력하십시오.
그런 다음 서버에이 리스너가 세션에두고
public class MySessionListener implements BayeuxServer.SessionListener {
@Override
public void sessionAdded(ServerSession session, ServerMessage message) {
Map<String, Object> ext = message.getExt();
if (ext != null) {
Map<String, Object> extra = (Map<String, Object>)ext.get("com.acme");
if (extra != null) {
String token = (String)extra.get("token");
session.setAttribute("token", token);
}
}
}
@Override
public void sessionRemoved(ServerSession session, boolean timedout) {
}
}
는 token
필드 위의 예에서, 클라이언트에 의해 전송 된 데이터를 속성.
그런 다음 응용 프로그램의 다른 곳에서 세션 속성에 액세스하여 해당 데이터를 사용할 수 있습니다.