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

    创建客户端

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

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

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

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

    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/")