创建客户端

创建客户端有两种方式,一种是直接使用特化的构造器函数,另一种是使用工厂构造器函数。

第一种方式返回的是具体的客户端结构体指针对象,第二种方式返回的是客户端接口对象。

使用特化的构造器函数创建客户端

特化的构造器函数有下面几个:

  1. func NewHTTPClient(uri ...string) (client *HTTPClient)
  1. func NewTCPClient(uri ...string) (client *TCPClient)
  1. func NewUnixClient(uri ...string) (client *UnixClient)
  1. func NewFastHTTPClient(uri ...string) (client *FastHTTPClient)
  1. func NewWebSocketClient(uri ...string) (client *WebSocketClient)

他们分别返回 net/http 客户端、TCP 客户端、Unix Socket 客户端、fasthttp 客户端和 WebSocket 客户端。

这几个客户端的结构体对象指针都实现了 Client 接口。

每个客户端可以接受 1 个或多个服务器地址,且地址开始的 scheme 部分必须相同。

对于 fasthttp 客户端和 net/http 客户端来说,它们只接受 httphttps 开头的地址。

对于 TCP 客户端,只接受 tcptcp4tcp6 开头的地址。

对于 Unix Socket 客户端,只接受 unix 开头的地址。

对于 WebSocket 客户端,只接受 wswss 开头的地址。

其中 fasthttp 和 WebSocket 客户端已经移动到 rpc/fasthttp 和 rpc/websocket 目录下。

使用工厂构造器函数创建客户端

  1. func NewClient(uri ...string) Client

该方法也是接受 1 个或多个服务器地址,且地址开始的 scheme 部分必须相同。

该方法接受 http, https, tcp, tcp4, tcp6, unix, ws, wss 开头的地址。该方法会根据所指定的 scheme 来自动识别该创建哪种具体的客户端对象。

如果指定的是 httphttps 的地址,默认情况下是返回 net/http 的客户端。

你可以使用 import _ "github.com/hprose/hprose-golang/rpc/fasthttp" 方式来初始化 fasthttp 的客户端,例如:

  1. import (
  2. "github.com/hprose/hprose-golang/rpc"
  3. _ "github.com/hprose/hprose-golang/rpc/fasthttp"
  4. )
  5.  
  6. client := rpc.NewClient("http://127.0.0.1:8080/")

使用 fasthttp 客户端会比使用 net/http 快很多。

使用 WebSocket 客户端时,也需要使用 import _ "github.com/hprose/hprose-golang/rpc/websocket" 方式来初始化 WebSocket 的客户端,例如:

  1. import (
  2. "github.com/hprose/hprose-golang/rpc"
  3. _ "github.com/hprose/hprose-golang/rpc/websocket"
  4. )
  5.  
  6. client := rpc.NewClient("ws://127.0.0.1:8080/")