🆕 支持转发消息到外部服务(暂时只支持socket)

This commit is contained in:
李寻欢
2023-12-06 10:16:52 +08:00
parent 81be5a0f70
commit 63d50b815c
4 changed files with 44 additions and 3 deletions

25
tcpserver/forward.go Normal file
View File

@@ -0,0 +1,25 @@
package tcpserver
import (
"go-wechat/config"
"log"
"net"
)
// forward
// @description: 转发消息
func forward(msg []byte) {
// 使用socket转发消息
for _, s := range config.Conf.Wechat.Forward {
conn, err := net.Dial("tcp", s)
if err != nil {
log.Printf("转发消息失败,错误信息: %v", err)
continue
}
_, err = conn.Write(msg)
if err != nil {
log.Printf("转发消息失败,错误信息: %v", err)
}
_ = conn.Close()
}
}

View File

@@ -2,6 +2,7 @@ package tcpserver
import (
"bytes"
"go-wechat/config"
"go-wechat/handler"
"io"
"log"
@@ -24,6 +25,11 @@ func process(conn net.Conn) {
}
log.Printf("[%s]数据长度: %d", conn.RemoteAddr(), buf.Len())
go handler.Parse(conn.RemoteAddr(), buf.Bytes())
// 转发到其他地方去
if len(config.Conf.Wechat.Forward) > 0 {
go forward(buf.Bytes())
}
// 将接受到的数据返回给客户端
if _, err := conn.Write([]byte("200 OK")); err != nil {
log.Printf("[%s]返回数据失败,错误信息: %v", conn.RemoteAddr(), err)