04-send

command
v0.0.0-...-0e4e142 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 19, 2020 License: MPL-2.0 Imports: 10 Imported by: 0

README

send

It is an implementation example that performs simple ping/pong.

Usage:

node1 will increment the received ping message and send a pong message to all nodes.

node2 periodically sends a ping message to all nodes.
If it received the pong message just before, node2 will increment pong Value and send it.

run node1:

$ go run c.go node1.go
// => received msg: key=ping value=0
// => send to node2 msg: key=pong value=1

run node2:

$ go run c.go node2.go --join 192.168.0.25:7947
// => send to node1 msg: key=ping value=0
// => received msg: key=pong value=1
Timeline:
                                      +
  node1 says                          | node2 says
+-------------------------------------|-----------------------------------------+
                                      | send to node1 msg: key=ping value=0
  received msg: key=ping value=0      | 
  send to node2 msg: key=pong value=1 |
                                      | received msg: key=pong value=1
                                      | send to node1 msg: key=ping value=2
  received msg: key=ping value=2      | 
  send to node2 msg: key=pong value=3 |
                                      | received msg: key=pong value=3
                                      | send to node1 msg: key=ping value=4
  received msg: key=ping value=4      |
  send to node2 msg: key=pong value=5 |
                                      | received msg: key=pong value=5
                                      |
                                      +

Note:

You can send arbitrary values by using []byte to send data.
When sending, you can choose to use a reliable transport or a best effort transport.

type MyMessage struct {
  Key    string  `json:"key"`
  Value  uint64  `json:"value"`
}
func (m *MyMessage) Bytes() []byte {
  data, err := json.Marshal(m)
  if err != nil {
    return []byte("")
  }
  return data
}

m := &MyMessage{
  Key: "hello world",
  Value: 12345,
}
list.SendReliable(node, m.Bytes())

NextStep:

  • RPC (Remote Procedure Call)
  • P2P (node communication)
  • Proxy / Gateway

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL