func main() { runtime.GOMAXPROCS(runtime.NumCPU()) remoting.Start("127.0.0.1:8080") clients := hashset.New() props := actor.FromFunc(func(context actor.Context) { switch msg := context.Message().(type) { case *messages.Connect: log.Printf("Client %v connected", msg.Sender) clients.Add(msg.Sender) msg.Sender.Tell(&messages.Connected{Message: "Welcome!"}) case *messages.SayRequest: notifyAll(clients, &messages.SayResponse{ UserName: msg.UserName, Message: msg.Message, }) case *messages.NickRequest: notifyAll(clients, &messages.NickResponse{ OldUserName: msg.OldUserName, NewUserName: msg.NewUserName, }) } }) actor.SpawnNamed(props, "chatserver") console.ReadLine() }
func main() { runtime.GOMAXPROCS(runtime.NumCPU()) runtime.GC() remoting.Start("127.0.0.1:8080") props := actor. FromProducer(newRemoteActor()). WithMailbox(actor.NewBoundedMailbox(1000, 10000)) actor.SpawnNamed(props, "remote") console.ReadLine() }
func main() { runtime.GOMAXPROCS(runtime.NumCPU()) remoting.Start("127.0.0.1:8080") //create the channel channel := make(chan *messages.MyMessage) //create an actor receiving messages and pushing them onto the channel props := actor.FromFunc(func(context actor.Context) { switch msg := context.Message().(type) { case *messages.MyMessage: channel <- msg } }) actor.SpawnNamed(props, "MyMessage") //consume the channel just like you use to go func() { for msg := range channel { log.Println(msg) } }() console.ReadLine() }