Joyit 1 dia atrás
pai
commit
e09041df08
2 arquivos alterados com 9 adições e 2 exclusões
  1. 7 0
      filter.go
  2. 2 2
      hub.go

+ 7 - 0
filter.go

@@ -16,6 +16,13 @@ func AllChannelFilter() FilterFunc {
 	}
 }
 
+// 只匹配当前频道的过滤器
+func EqualChannelFilter(channel string) FilterFunc {
+	return func(conn *Line) (ok bool) {
+		return conn.channel == channel
+	}
+}
+
 // 正则频道过滤器
 func RegChannelFilter(channel *regexp.Regexp) FilterFunc {
 	return func(conn *Line) (ok bool) {

+ 2 - 2
hub.go

@@ -8,6 +8,7 @@ import (
 	"log"
 	"math/rand"
 	"net"
+	"slices"
 
 	// "regexp"
 	"strconv"
@@ -386,8 +387,7 @@ func (h *Hub) requestFromNet(request *RequestData) {
 	if ok {
 		subs := sub.([]*SubscribeData)
 		// 倒序查找是为了新增的频道响应函数优先执行
-		for i := len(subs) - 1; i >= 0; i-- {
-			rg := subs[i]
+		for _, rg := range slices.Backward(subs) {
 			if rg.Filter(request.conn) {
 				// 加入filter是为了能更好看到是哪个过滤器匹配的
 				request.Filter = rg.Filter