2016-08-08 1 views
3

pub-nub v4를 사용하여 API 기반 레일 앱이 있습니다. pub-nub를 사용하는 클라이언트 측 (IOS/Android)과 동일합니다. 여기 여러 개의 동일한 요청을 게시하는 중 게시 pubnubv4 레일

는 단계 우리가하고있는 다음과 같습니다

1) 우리는이 객체의 기준으로 두 개의 채널을 구독하는 우리는 두 개의 채널을 구독하고 클라이언트 측에 listener.here.At 같은 시간을 생성하는 모든 객체를 생성에 신분증.

2) 웹에서 end.so로 여러 요청을 작성하는 동일한 채널에 대해 IOS 끝에서 게시하는 경우 여러 개의 DB 항목이 생성됩니다.

다음은 가입 및 가입 취소의 코드 샘플입니다.

$pubnub.add_listener("broadcast_#{broadcast.id.to_s}") 

$pubnub.subscribe("broadcast_#{broadcast.id.to_s},broadcastLikes_#{broadcast.id.to_s}") 


$pubnub.publish("broadcast_#{self.id.to_s}", { type: "StopBroadcast", text: text }) 
$pubnub.remove_listener("broadcast_#{self.id.to_s}") 
$pubnub.unsubscribe("broadcast_#{self.id.to_s}, broadcastLikes_#{self.id.to_s}") 

누구나 나를 도울 수 있습니다!

+0

Rails 서버를 구독하는 이유는 무엇입니까? 클라이언트에서 서버로 메시지를 보내야하는 경우 POST 만하는 것이 좋습니다. 서버에서 구독하여 수행하는 모든 작업은 실제로 이점을 제공하지 않는 기존 웹 응용 프로그램 POST를 대체합니다. PubNub를 사용해야하는 부분은 서버 - 클라이언트입니다. –

+0

@CraigConover 여기서 add_listener의 역할은 무엇입니까? subscribe와 add_listener의 관계는 무엇입니까? add_listener가 없으므로 가입 된 콜백을 추적 할 수 없으므로 알려주십시오. 긴급합니다. –

+0

이름을 동적으로 생성하는 여러 리스너를 어떻게 처리 할 수 ​​있는지 예제를 제공해주십시오. –

답변

1

의견에서 답변 모음 :

당신이 당신의 서버에 클라이언트에서 메시지를 보낼 필요가 있다면, 왜 그냥 그들을 POST? 서버에서 구독하여 수행하는 모든 작업은 실제로 이점을 제공하지 않는 기존 웹 응용 프로그램 POST를 대체합니다. PubNub를 사용해야하는 부분은 서버 - 클라이언트입니다.

Q :여기서 add_listener의 역할은 무엇입니까? subscribe와 add_listener의 관계는 무엇입니까?

대답 : 수신기는 모든 채널 구독 응답 및 상태입니다. 모든 채널에 대해 하나의 전체 (앱 수준) 수신기 만 만듭니다. 채널을 구독하면 해당 채널에 게시 된 메시지가 청취자에게 전달됩니다. 채널에서 탈퇴하면 해당 채널에 게시 된 메시지를 더 이상 수신하지 않습니다. 원하는 채널을 구독 할 (청취) 수 있도록 많은 채널을 구독 할 수 있습니다. 모든 채널에서 탈퇴하면 더 이상 메시지를받지 않습니다.

Q :동시에 여러 메시지를 처리 ​​할 수있는 단일 글로벌 수신기가 의심 스럽지만 놓칠 가능성이 있습니다. 우리는이 청취자를 제거해야 할 것인가 말 것인가? 그렇다면 언제? 그리고 새로운 루비 인 PubNub v4에 따르면 청취자에 대한 세부 정보가 표시되지 않으므로 혼란스러워집니다.

대답 : 단일 수신기 디자인 패턴은 모든 메시지를 놓치지 않습니다. 여러 청취자에 대한 현재 지원은 없습니다 (적어도 상자 밖에서는 안됨). 그렇기 때문에 다중 청취자 요구 사항에 관심이 있습니다. 그러나 단일/글로벌 리스너는 앱이 구독하는 모든 채널에 게시 된 모든 메시지를 수신합니다.

Q :우리는 이것을 어떻게해야합니까? 예, 그렇다면 언제. 그렇다면 아무 문제가 없을까요? 다중 리스너 요구 사항에 따라 각 리스너를 자체 이벤트로 분리하여 단일 글로벌 리스너의 부하를 줄일 수 있습니다. 이 경우 여러 콜백 요청이 한 번에 같은 콜백을 치고 있습니다.

A : 정말로 removeListener를 수행 할 필요는 없습니다.그러나 앱에서 PubNub으로 끝낸 사람이 없다면, 그냥 약간의 기억을 없애기 위해 호출 할 수 있습니다 (거의 없습니다). 그리고 나는 당신에게 아무런 문제없이 단일 청취자를 사용할 수 있음을 확신합니다. 그것은 과부하되지 않습니다. 리스너는 multi-thread/thread-safe입니다. 그렇지 않으면 PubNub가 전혀 작동하지 않습니다 (또는 바람직한 방법으로).

관련 문제