golang一些常用库(6)

2024-02-04 16:31:19 浏览数 (1)

Gorilla WebSocket 提供了 WebSocket 协议的实现,用于实现实时通信。

代码语言:javascript复制
goCopy codepackage main

import (
	"log"
	"net/http"
	"github.com/gorilla/websocket"
)

var upgrader = websocket.Upgrader{
	CheckOrigin: func(r *http.Request) bool {
		return true
	},
}

func handler(w http.ResponseWriter, r *http.Request) {
	conn, err := upgrader.Upgrade(w, r, nil)
	if err != nil {
		log.Print(err)
		return
	}
	defer conn.Close()

	for {
		messageType, p, err := conn.ReadMessage()
		if err != nil {
			return
		}
		if err := conn.WriteMessage(messageType, p); err != nil {
			return
		}
	}
}

func main() {
	http.HandleFunc("/ws", handler)
	http.ListenAndServe(":8080", nil)
}

31. github.com/gin-contrib/cors - CORS 中间件

Gin CORS Middleware 是一个用于 Gin 框架的 CORS(跨域资源共享)中间件。

代码语言:javascript复制
goCopy codepackage main

import (
	"github.com/gin-contrib/cors"
	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.Default()

	r.Use(cors.Default())

	r.GET("/hello", func(c *gin.Context) {
		c.JSON(200, gin.H{"message": "Hello, CORS!"})
	})

	r.Run(":8080")
}

32. github.com/nats-io/nats.go - NATS 消息系统客户端

NATS 是一个轻量级、高性能的消息系统,提供了 Go 语言客户端。

代码语言:javascript复制
goCopy codepackage main

import (
	"log"
	"time"
	"github.com/nats-io/nats.go"
)

func main() {
	nc, _ := nats.Connect(nats.DefaultURL)
	defer nc.Close()

	sub, _ := nc.SubscribeSync("subject")
	msg, err := sub.NextMsg(time.Second * 5)
	if err == nil {
		log.Printf("Received message: %s", msg.Data)
	} else {
		log.Println("No message received")
	}
}

33. github.com/go-redis/redis/v8 - Redis 客户端

前面已经提到过,这里再强调一下 Go Redis 客户端的一些基本用法。

代码语言:javascript复制
goCopy codepackage main

import (
	"context"
	"fmt"
	"github.com/go-redis/redis/v8"
)

func main() {
	ctx := context.Background()
	client := redis.NewClient(&redis.Options{
		Addr:     "localhost:6379",
		Password: "",
		DB:       0,
	})

	err := client.Set(ctx, "key", "value", 0).Err()
	if err != nil {
		panic(err)
	}

	val, err := client.Get(ctx, "key").Result()
	if err != nil {
		panic(err)
	}
	fmt.Println("key:", val)
}

34. github.com/pkg/errors - 错误处理库

pkg/errors 提供了更强大的错误处理能力,包含堆栈信息,适用于更复杂的错误追踪。

代码语言:javascript复制
goCopy codepackage main

import (
	"fmt"
	"github.com/pkg/errors"
)

func foo() error {
	return errors.New("error in foo")
}

func bar() error {
	err := foo()
	if err != nil {
		return errors.Wrap(err, "error in bar")
	}
	return nil
}

func main() {
	err := bar()
	if err != nil {
		fmt.Printf("% vn", err)
	}
}

这些是另一批基础常用的 Go 语言库及其用法,包括 WebSocket 库、CORS 中间件、NATS 消息系统客户端、Redis 客户端和错误处理库等方面。根据项目的具体需求,你可以选择适用的库来进行开发。

go

0 人点赞