创建客户端
创建客户端有两种方式,一种是直接使用特化的构造器函数,另一种是使用工厂构造器函数。
第一种方式返回的是具体的客户端结构体指针对象,第二种方式返回的是客户端接口对象。
使用特化的构造器函数创建客户端
特化的构造器函数有下面几个:
- func NewHTTPClient(uri ...string) (client *HTTPClient)
- func NewTCPClient(uri ...string) (client *TCPClient)
- func NewUnixClient(uri ...string) (client *UnixClient)
- func NewFastHTTPClient(uri ...string) (client *FastHTTPClient)
- func NewWebSocketClient(uri ...string) (client *WebSocketClient)
他们分别返回 net/http 客户端、TCP 客户端、Unix Socket 客户端、fasthttp 客户端和 WebSocket 客户端。
这几个客户端的结构体对象指针都实现了 Client
接口。
每个客户端可以接受 1 个或多个服务器地址,且地址开始的 scheme 部分必须相同。
对于 fasthttp 客户端和 net/http 客户端来说,它们只接受 http
和 https
开头的地址。
对于 TCP 客户端,只接受 tcp
、tcp4
和 tcp6
开头的地址。
对于 Unix Socket 客户端,只接受 unix
开头的地址。
对于 WebSocket 客户端,只接受 ws
和 wss
开头的地址。
其中 fasthttp 和 WebSocket 客户端已经移动到 rpc/fasthttp 和 rpc/websocket 目录下。
使用工厂构造器函数创建客户端
- func NewClient(uri ...string) Client
该方法也是接受 1 个或多个服务器地址,且地址开始的 scheme 部分必须相同。
该方法接受 http
, https
, tcp
, tcp4
, tcp6
, unix
, ws
, wss
开头的地址。该方法会根据所指定的 scheme 来自动识别该创建哪种具体的客户端对象。
如果指定的是 http
、https
的地址,默认情况下是返回 net/http 的客户端。
你可以使用 import _ "github.com/hprose/hprose-golang/rpc/fasthttp"
方式来初始化 fasthttp 的客户端,例如:
- import (
- "github.com/hprose/hprose-golang/rpc"
- _ "github.com/hprose/hprose-golang/rpc/fasthttp"
- )
- client := rpc.NewClient("http://127.0.0.1:8080/")
使用 fasthttp 客户端会比使用 net/http 快很多。
使用 WebSocket 客户端时,也需要使用 import _ "github.com/hprose/hprose-golang/rpc/websocket"
方式来初始化 WebSocket 的客户端,例如:
- import (
- "github.com/hprose/hprose-golang/rpc"
- _ "github.com/hprose/hprose-golang/rpc/websocket"
- )
- client := rpc.NewClient("ws://127.0.0.1:8080/")