Skip to content

Introduction

HTTP service module, creates and manages the HTTP server based on the Gin framework. Responsible for service startup, CORS cross-origin, Gzip compression, Session management, static resource loading, route dispatching, platform detection, and port occupancy checking. In the ee-go initialization flow, it is automatically started by eboot calling CreateServer().

Import

go
import "github.com/wallace5303/ee-go/ehttp"

Constants

PlatformPC

string"pc", the platform identifier for the Electron desktop client.

PlatformBrowser

string"browser", the platform identifier for the browser desktop client.

PlatformPhone

string"phone", the platform identifier for the mobile client.

PlatformPad

string"pad", the platform identifier for the tablet client.

Conf

map[string]any — HTTP configuration global variable, written by CreateServer(), stores http configuration items (port, network, etc.).

API

CreateServer(cfg)

Description: Create and start the HTTP server. Based on the Gin framework, it sequentially registers CORS, Session, and Gzip middleware, loads debug routes (pprof), static resources and view routes, checks port occupancy, and then listens for service.

Parameters:

ParameterTypeRequiredDescription
cfgmap[string]anyYesHTTP configuration, contains port (float64→int), network (bool), and other fields

Returns: None

Example:

go
httpCfg := econfig.GetHttp()
if httpCfg["enable"] == true {
    ehttp.CreateServer(httpCfg)
}

See also: econfig.GetHttp(), erouter

GetPlatform(ctx)

Description: Determine the current access platform type based on the User-Agent header of the HTTP request. Electron client returns "pc"; tablets or large-screen Android return "browser"; mobile returns "phone"; other browsers return "browser".

Parameters:

ParameterTypeRequiredDescription
ctx*gin.ContextYesGin request context

Returns: string — platform identifier, one of PlatformPC, PlatformBrowser, PlatformPhone

Example:

go
platform := ehttp.GetPlatform(ctx)
if platform == ehttp.PlatformPC {
    // Desktop logic
} else if platform == ehttp.PlatformPhone {
    // Mobile logic
}

IsPortOpen(port)

Description: Check whether the specified TCP port is already occupied. Attempts to connect to 127.0.0.1:port via net.DialTimeout within 1 second. If the connection succeeds, the port is open (occupied).

Parameters:

ParameterTypeRequiredDescription
portstringYesPort number string, e.g. "7073"

Returns: booltrue indicates the port is occupied, false indicates the port is available

Example:

go
port := "7073"
if ehttp.IsPortOpen(port) {
    fmt.Printf("Port %s is already in use\n", port)
} else {
    fmt.Printf("Port %s is available\n", port)
}