2011-03-04 7 views
4

나는 멀티 플레이어 체스 게임을 쓰고 있고, 웹 서버 서버 부분에 푸셔를 사용하고 있습니다.푸셔 앱 클라이언트 이벤트

어쨌든 사용자 목록이있는 경우 그 중 하나를 선택하여 도전하십시오. 어떻게 그 한 명의 사용자에게만 챌린지를 보내면됩니까?

channel.trigger("client-challenge_member1", {some : "data"}); 

이 이벤트는 이미 작성된 상태 여야합니다. 그렇다면 각 회원이 가입 한 후에이 이벤트를 동적으로 생성합니까? 같은 가능성에 :

channel.bind("pusher:subscribed_completed", function(member) // not sure of correct syntax but... 
{ 
    channel.bind("client-challenge_" + member.memberID, function(data) 
    { 
     alert(data.Name + " is challenging you."); 
    }); 
}); 

내가 좋아하는, trigger에 대한 과부하 방법이있을 거라고 생각 :

channel.trigger(eventName, data, memberID) 

하지만 이런 건 볼 수 없습니다. 어떤 아이디어? 감사.

답변

8

내 응용 프로그램에서이 문제가 발생했습니다. 현재 Pusher는 특정 사용자에게 이벤트를 보내는 메소드를 제공하지 않습니다. 당신이 언급 한 접근법이 당신의 상황에서 효과가 있다고 생각합니다. 내 응용 프로그램의 경우 각 사용자가 채널 ID로 사용자 ID를 가진 채널을 구독 했으므로 해당 채널을 통해 단일 사용자에게 메시지를 보낼 수있었습니다.

client = new Pusher(PUSHER_API_KEY); 
channel = client.subscribe(user_id); 
channel.bind('my_event',function(data){ 
    //Do stuff 
}); 

나는 푸셔 팀과 함께이 접근법에 대해 이야기했으며 여분의 채널을 갖는 데 실제 오버 헤드가 없다고 확신했다. new Pusher() 명령은 새로운 소켓 연결을 만드는 코드이므로 채널당 추가 소켓이나 그와 같은 것에 대해 걱정할 필요가 없습니다. 희망이 도움이됩니다.

1

다른 서비스를 고려할 수있는 경우 Beaconpush에 특정 사용자에게 메시지를 보낼 수있는 기능이 있습니다. 자신의 사이트에서

:

POST /1.0.0/[API key]/users/[user]

3

내가 미는에서 왔어요. Braden이 말했듯이, 사용자 당 쉽게 채널을 만들 수 있습니다. 이것은 이벤트 이름에 사용자 ID를 갖는 것보다 효율적입니다. 이는 쓸모없는 메시지로 모두를 스팸 함을 의미합니다.

이 부분을 개선하고 싶습니다. 의견을 보내 주셔서 감사합니다.

+0

사용자 당 다른 채널이 꽤 좋은 것처럼 보입니다. 어떻게 개선 할 수 있니? – maletor

관련 문제