Kite 既是框架的名称,也是使用该框架编写的微服务。基本上,Kite 是一个 RPC 服务器和一个客户端。它连接到其他风筝和对等方以相互通信。他们可以使用名为 Kontrol 的服务发现其他风筝,并与它们进行双向通信。通信协议使用 WebSocket(或 XHR)作为传输,以允许 Web 应用程序直接连接到风筝。
风筝可以通过套接字会话发送dnode消息来相互交谈 。如果客户端知道服务器 kite 的 URL,它可以直接连接到它。如果 URL 未知,客户端可以从 Kontrol(服务发现)请求它。
安装包:
go get github.com/koding/kite导入它:
import "github.com/koding/kite"并kite用作代码中的包名。
Kontrol 是 Kites 使用的服务注册和认证服务。它本身也是一只风筝。
当风筝开始运行时,它可以根据需要使用该 Register()方法将自己注册到 Kontrol。这使得其他人可以通过查询 Kontrol 找到它。还有一个代理风筝,用于为注册的风筝提供公共 URL。
查询有 7 个字段:
///////
安装控件:
go get github.com/koding/kite/kontrol/kontrol
为 Kite 密钥生成密钥:
openssl genrsa -out key.pem 2048
openssl rsa -in key.pem -pubout > key_pub.pem
设置环境变量:
KONTROL_PORT=6000
KONTROL_USERNAME="kontrol"
KONTROL_STORAGE="etcd"
KONTROL_KONTROLURL="http://127.0.0.1:6000/kite"
KONTROL_PUBLICKEYFILE="certs/key_pub.pem"
KONTROL_PRIVATEKEYFILE="certs/key.pem"
生成初始kite密钥:
./bin/kontrol -initial
浏览器也可以是 Kite。它有自己的方法(“log”用于将消息记录到控制台,“alert”用于向用户显示警报等)。连接的风筝可以调用网页上定义的方法。
有关更多信息,请参阅kite.js 库。
下面你可以找到一个例子,一个计算收到数字平方的数学kite:
package main
import "github.com/koding/kite"
func main() {
// Create a kite
k := kite.New("math", "1.0.0")
// Add our handler method with the name "square"
k.HandleFunc("square", func(r *kite.Request) (interface{}, error) {
a := r.Args.One().MustFloat64()
result := a * a // calculate the square
return result, nil // send back the result
}).DisableAuthentication()
// Attach to a server with port 3636 and run it
k.Config.Port = 3636
k.Run()
}现在让我们连接到它并发送 a4作为参数。
package main
import (
"fmt"
"github.com/koding/kite"
)
func main() {
k := kite.New("exp2", "1.0.0")
// Connect to our math kite
mathWorker := k.NewClient("http://localhost:3636/kite")
mathWorker.Dial()
response, _ := mathWorker.Tell("square", 4) // call "square" method with argument 4
fmt.Println("result:", response.MustFloat64()) | 留言与评论(共有 0 条评论) “” |