2017-04-20 10 views
0

私は、次の図を実装するつもりです。ただ、すべての「データ・ジェネレータは、」すべての「データ受信」にデータを公開できるように ZMQ-proxyZMQプロキシを「スイッチ」として使用することはできますか?

を。 データ受信者は引き続きサブスクリプションを設定できるはずです。

// Proxy 
package main 

import zmq "github.com/pebbe/zmq4" 

func main() { 
    publisher, _ := zmq.NewSocket(zmq.XPUB) 
    defer publisher.Close() 
    publisher.Bind("tcp://*:8080") 

    subscriber, _ := zmq.NewSocket(zmq.XSUB) 
    defer subscriber.Close() 
    subscriber.Bind("tcp://*:8081") 

    zmq.Proxy(subscriber, publisher, nil) 
} 

そして、 "データ・ジェネレータ":

// Data generator 
package main 

import (
    zmq "github.com/pebbe/zmq4" 
    "time" 
) 

func main() { 
    publisher, _ := zmq.NewSocket(zmq.PUB) 
    defer publisher.Close() 
    publisher.Connect("tcp://127.0.0.1:8081") 

    for { 
     publisher.Send("Some msg", 0) 
     time.Sleep(time.Second) 
    } 
} 

そして、 "データ受信":

// Data receiver 
package main 

import (
    "fmt" 
    zmq "github.com/pebbe/zmq4" 
) 

func main() { 
    subscriber, _ := zmq.NewSocket(zmq.SUB) 
    defer subscriber.Close() 
    subscriber.Connect("tcp://127.0.0.1:8080") 

    for { 
     msg, _ := subscriber.Recv(0) 
     fmt.Println(msg) 
    } 
} 

動作するはずと私には思われるが、そうではありません。私は間違って何をしていますか?

+0

プロキシのソケットモニタでは、EVENT_ACCEPTEDとEVENT_DISCONNECTEDメッセージが表示されます。 –

答えて

1

データを受信するには、サブスクライバソケットにはいくつかのフィルタを使用してSetSubscibeを指定する必要があります。 Official documentation

関連する問題