2017-03-20 12 views
3

나는 녹 나노 구체 pubsub example을 시도했지만 작동하지 않습니다.나노 상자 크레이트의 예가 작동하지 않습니다

나는 별도의 콘솔 창에서 이러한 작업의 각 한 :

  1. cargo run --example pubsub -- device hoge

    그것은 그것은

    을 보여줍니다

    Subscribed to '[104, 111, 103, 101]'. 
    Device is ready. 
    
  2. cargo run --example pubsub -- client hoge

    보여줍니다

    Subscribed to '[104, 111, 103, 101]'. 
    
  3. cargo run --example pubsub -- server hoge

    그것은

Server is ready. 
Published '[104, 111, 103, 101] #1'. 
Published '[104, 111, 103, 101] #2'. 
Published '[104, 111, 103, 101] #3'. 
... 

모든 세 가지 명령이 실행 유지 보여주고, 그들 중 누구도 종료하지 않습니다. 콘솔 2에 다음과 같이 표시 할 것을 기대했습니다.

Subscribed to '[104, 111, 103, 101]'. 
Recv '[104, 111, 103, 101] #1'. 
Recv '[104, 111, 103, 101] #2'. 
Recv '[104, 111, 103, 101] #3'. 
... 

아무 것도 표시되지 않았습니다.

내 환경

  • 최대 OS X 시에라
  • nanomsg 1.0.0
  • rustc 1.16.0
+1

이것을 재현 할 수 있습니다. 솔직히 말하자면 실제 예제에서 문제가 될 수 있으므로 문제를 제기했습니다. https://github.com/thehydroimpulse/nanomsg.rs/issues/173 –

답변

5

그것은 이미되어있는 서버 코드에 문제가 있었다이다 마스터 브랜치 (#173)에서 수정되었습니다. 여기에 결함이있는 코드 조각 (from repo는)입니다 :

let msg = format!("{:?} #{}", topic, count); 
match socket.write_all(msg.as_bytes()) { 
    Ok(..) => println!("Published '{}'.", msg), 
    Err(err) => { 
     println!("Server failed to publish '{}'.", err); 
     break 
    } 
} 

게시 된 메시지를 사용하여 구축 된 format! 잘못 바이트의 배열보다는 텍스트의 조각으로 주제를 꽤 - 인쇄 된 매크로. 다른 주제 식별자로 인해 메시지를 수신하는 구독자가 없습니다.

예제는 현재 관리자가 here로 수정했습니다. 결말 메모로이 API 사용자는 게시 메시지의 첫 번째 바이트가 항상 구독 주제를 참조한다는 점을 명심해야합니다.