前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >golang一些常用库(6)

golang一些常用库(6)

原创
作者头像
dbdocker
发布2024-02-04 16:31:19
1520
发布2024-02-04 16:31:19
举报
文章被收录于专栏:go语言go语言

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("%+v\n", err)
	}
}

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 31. github.com/gin-contrib/cors - CORS 中间件
  • 32. github.com/nats-io/nats.go - NATS 消息系统客户端
  • 33. github.com/go-redis/redis/v8 - Redis 客户端
  • 34. github.com/pkg/errors - 错误处理库
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档