🆕 支持转发消息到外部服务(暂时只支持socket)
This commit is contained in:
25
tcpserver/forward.go
Normal file
25
tcpserver/forward.go
Normal 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()
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user