github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/prepare/23_proto_actor/remoteheader/node1/main.go (about) 1 package main 2 3 import ( 4 "log" 5 "time" 6 7 console "github.com/AsynkronIT/goconsole" 8 "github.com/AsynkronIT/protoactor-go/actor" 9 "github.com/AsynkronIT/protoactor-go/examples/remotebenchmark/messages" 10 "github.com/AsynkronIT/protoactor-go/remote" 11 ) 12 13 func main() { 14 remote.Start("127.0.0.1:8081") 15 16 rootContext := actor.EmptyRootContext 17 props := actor. 18 PropsFromFunc(func(context actor.Context) { 19 switch context.Message().(type) { 20 case *messages.Pong: 21 v := context.MessageHeader().Get("test_header") 22 log.Println("Receive pong message with header:" + v) 23 } 24 }) 25 26 pid := rootContext.Spawn(props) 27 28 remotePid := actor.NewPID("127.0.0.1:8080", "remote") 29 rootContext.RequestFuture(remotePid, &messages.StartRemote{ 30 Sender: pid, 31 }, 5*time.Second). 32 Wait() 33 34 message := &messages.Ping{} 35 rootContext.Send(remotePid, message) 36 37 console.ReadLine() 38 }