Golang Go语言 wechat_pusher - 基于 Golang 开发的微信消息定时推送框架

wechat_pusher

Github

功能列表

  • 消息推送
    • 模板消息推送
      • model -> message.go
      • task -> template_task.go
    • 图片推送(TODO)
    • 文字推送(TODO)
    • 图文推送(TODO)
  • 日志存储
  • 计划任务

如何开始?

第一步:当然是 go get

├── README.md
├── config
│   └── config.go
├── config.conf
├── config.conf.example
├── enum
│   └── task_type.go
├── glide.lock
├── glide.yaml
├── hlog
│   ├── filelog.go
│   ├── filelog_test.go
│   └── hlog.go
├── main.go
├── main.go.example
├── models
│   ├── message.go
│   └── token.go
├── redis
│   ├── redis.go
│   └── redis_test.go
├── statics
│   └── global.go
├── task
│   ├── task.go
│   └── template_task.go
├── utils
│   ├── access_token.go
│   ├── crontab.go
│   └── push.go
└── vendor
    └── github.com

第二步:创建一个项目

创建配置文件

  • 项目根目录有一个 config.conf.example,重命名为 config.conf 即可
  • 内容如下:
[WeChat]
APPID=
SECRET=
TOKEN=

[Redis] POOL_SIZE= TIMEOUT= HOST= PASS= DB=

[Log] LOG_PATH=

  • WeChat 部分

    • APPID && SECRET && TOKEN 这些是微信开发者必须了解的东西。不细讲
  • Redis 部分

    • POOL_SIZE 连接池大小 ,整型 int
    • TIMEOUT 连接超时时间 ,整型 int
    • HOST 连接的 IP 字符串 string
    • PASS 密码 字符串 string
    • DB 数据库选择 整型 int
  • Log 部分

    • LOG_PATH 日志存放文件夹,例如值为 wechat_log,那么完整的目录应该是 GOPATH/wechat_log
  • 调用的时候这么写:


conf := config.Instance()
//例如 wechat 的 appid
appId := conf.ConMap["WeChat.APPID"]

模板怎么配置

  • 以模板消息作为例子说明:
  • message.go 是模板消息的结构
  • template_task.go 是将一个模板消息封装成任务( template_task.go 是实现了接口 task.go 的)
mess := models.Message{
		ToUser:     "openid",
		TemplateId: "templateid",
		Url:        "url",
		Data: models.Data{
			First:   models.Raw{"xxx", "#173177"},
			Subject: models.Raw{"xxx", "#173177"},
			Sender:  models.Raw{"xxx", "#173177"},
			Remark:  models.Raw{"xxx", "#173177"}}}

//封装成一个任务,TemplateTask 表示模板消息任务 task := task.TemplateTask{} task.SetTask(mess)

  • 以上代码是模板消息的配置,这个微信开发者应该都能看懂。

如何创建一个任务

  • 例如我们要创建一个模板消息定时推送任务
    • 第一步,封装任务
    • 第二步,添加任务,并设置任务类型、并发执行的个数、失败尝试次数等。
    • 第三步,启动任务
  • 我们用示例代码演示整个完整的过程
package main

import ( “github.com/hundredlee/wechat_pusher/enum” “github.com/hundredlee/wechat_pusher/models” “github.com/hundredlee/wechat_pusher/task” “github.com/hundredlee/wechat_pusher/utils” “runtime” )

func main() {

runtime.GOMAXPROCS(runtime.NumCPU())
var tasks []task.Task
tasks = make([]task.Task, 100)
mess := models.Message{
	ToUser:     "oBv9cuLU5zyI27CtzI4VhV6Xabms",
	TemplateId: "UXb6s5dahNC5Zt-xQIxbLJG1BdP8mP73LGLhNXl68J8",
	Url:        "http://baidu.com",
	Data: models.Data{
		First:   models.Raw{"xxx", "#173177"},
		Subject: models.Raw{"xxx", "#173177"},
		Sender:  models.Raw{"xxx", "#173177"},
		Remark:  models.Raw{"xxx", "#173177"}}}
task := task.TemplateTask{}
task.SetTask(mess)

for i := 0; i < 100; i++ {
	tasks[i] = &task
}

utils.NewPush(&utils.Push{
	Tasks:tasks,
	TaskType:enum.TASK_TYPE_TEMPLATE,
	Retries:4,
	BufferNum:10,
}).Add("45 * * * * *")

utils.StartCron()

}

Run

  • 很简单,当你组装好所有的 task 以后,直接运行一句话就可以了。
    utils.NewPush(&utils.Push{
    	Tasks:tasks,
    	TaskType:enum.TASK_TYPE_TEMPLATE,
    	Retries:4,
    	BufferNum:10,
    }).Add("45 * * * * *")
utils.StartCron()


Golang Go语言 wechat_pusher - 基于 Golang 开发的微信消息定时推送框架

更多关于Golang Go语言 wechat_pusher - 基于 Golang 开发的微信消息定时推送框架的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

什么协议 图片推送能做到吗

更多关于Golang Go语言 wechat_pusher - 基于 Golang 开发的微信消息定时推送框架的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


看配置这个是没有使用协议的, 用到了 APPID、SECRET,微信公众平台。。

针对“Golang Go语言 wechat_pusher——基于Golang开发的微信消息定时推送框架”这一话题,以下是我的专业回复:

wechat_pusher是一个基于Golang开发的微信消息定时推送框架,它能够帮助开发者实现微信消息的定时推送功能。该框架提供了丰富的功能,包括消息推送、模板消息推送等,并且支持日志存储和计划任务。

在使用wechat_pusher时,开发者需要先进行项目的初始化和配置。通过创建配置文件并设置相关的参数,如微信开发者的APPID、SECRET和TOKEN等,以及Redis的连接信息,可以确保框架能够正确连接到微信服务器和Redis数据库。

此外,wechat_pusher还支持模板消息的配置和推送。开发者可以通过定义消息的结构和内容,将其封装成一个任务,并设置任务的类型、并发执行的个数以及失败尝试次数等参数。然后,通过调用框架提供的API接口,可以实现消息的定时推送。

总的来说,wechat_pusher是一个功能强大且易于使用的微信消息定时推送框架,它能够帮助开发者快速实现微信消息的定时推送功能,适用于各种需要微信消息通知的场景。如果你对微信消息推送有需求,不妨尝试一下wechat_pusher框架。

回到顶部