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  }