2012-01-29 3 views
1

서버에서 채널 ID를 가져 오거나 RequestFactory 호출에서 전송할 수있는 방법이 있습니까?RequestFactory 요청에 대한 채널 클라이언트 ID 얻기

상황 :

  • 사용자가 응용 프로그램을 시작는 채널 개방되고있다.
  • 사용자가 RequestFactory (requests.persist().using(...).fire(...))가있는 항목을 유지합니다.
  • 서버의 persist() 메서드는 연결된 모든 클라이언트를 핑 (ping)하여 엔터티가 업데이트되었음을 ​​알립니다.

그러나 처음 변경 한 사용자는 ping 할 필요가 없습니다. 어떤 고객이 변경을했는지 확인하는 방법이 있습니까? 한 명의 사용자가 여러 창 (채널)을 열었 기 때문에 사용자를 알기에 충분하지 않습니다.

+0

"핑 (ping)"클라이언트를 보여줄 수 있습니까? – expert

+0

'CHANNEL_SERVICE.sendMessage (new ChannelMessage (clientId, message.toString()));''message'는 변경된 모델의 ID입니다. 클라이언트는이 모델을 다시로드합니다 ('requests.modelRequest(). findModel (id) .fire (modelReceiver);'). – Dominik

답변

0

정직하게 채널 API를 사용하지는 않았지만 문서에 따르면 각 클라이언트는 별도의 사용자로 취급됩니다. 그래서 해결책은 GAE의 API 너머 나는 두 가지 옵션이 있다고 생각 :

  1. 이 가능한 여러 채널에 매핑 될 클라이언트에서 논리적 사용자 ID를 작성합니다. 그러면 건너 뛸 채널을 알 수 있습니다.
  2. 어쨌든 모든 채널을 핑하지만 새롭게 유지되는 엔티티의 숫자 버전을 보냅니다. 그러면 클라이언트는 수신 된 버전을받은 버전과 비교하고 더 높은 경우 다시 findModel(id)에 전화해야한다는 것을 의미합니다.
+0

1.이 경우 서버는 어떤 클라이언트가 어떤 요청을했는지 알지 못합니다. 2. 그럴 수도 있습니다. – Dominik

+0

네, # 2처럼 보이는 것은 간단합니다. – expert

+0

하지만 버전이있는 항목 만 다시 보내면됩니다. 나는 모든 Request와 함께 clientId를 자동으로 보내기 위해 RequestFactory 호출을 무시하는 것에 대해 생각하고 있었다. – Dominik