From 524557dddd583a1005529dff266818f47eaffdbf Mon Sep 17 00:00:00 2001 From: shylinux Date: Wed, 25 Mar 2020 23:51:01 +0800 Subject: [PATCH] opt wss --- base/web/web.go | 16 ++++++++++++++-- core/chat/chat.go | 12 ++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/base/web/web.go b/base/web/web.go index 9c0a86ad..48b2b116 100644 --- a/base/web/web.go +++ b/base/web/web.go @@ -844,7 +844,7 @@ var Index = &ice.Context{Name: "web", Help: "网络模块", target := strings.Split(arg[0], ".") m.Warn(m.Richs(ice.WEB_SPACE, nil, target[0], func(key string, value map[string]interface{}) { - if socket, ok := value["socket"].(*websocket.Conn); !m.Warn(!ok, "socket err") { + if channel, ok := value["channel"].(chan *ice.Message); !m.Warn(!ok, "socket err") { // 复制选项 for _, k := range kit.Simple(m.Optionv("_option")) { switch k { @@ -863,7 +863,8 @@ var Index = &ice.Context{Name: "web", Help: "网络模块", // 下发命令 m.Target().Server().(*Frame).send[id] = m - socket.WriteMessage(MSG_MAPS, []byte(m.Format("meta"))) + + channel <- m t := time.AfterFunc(kit.Duration(m.Conf(ice.WEB_SPACE, "meta.timeout.c")), func() { m.Log(ice.LOG_WARN, "timeout") }) @@ -1947,15 +1948,26 @@ var Index = &ice.Context{Name: "web", Help: "网络模块", } // m.Cmd(ice.WEB_GROUP, m.Option("group"), "add", m.Option("name")) + c := make(chan *ice.Message, ice.ICE_CHAN) // 添加节点 h := m.Rich(ice.WEB_SPACE, nil, kit.Dict( kit.MDB_TYPE, m.Option("node"), kit.MDB_NAME, m.Option("name"), kit.MDB_TEXT, m.Option("user"), "share", share, "socket", s, + "channel", c, )) m.Log(ice.LOG_CREATE, "space: %s share: %s", m.Option(kit.MDB_NAME), share) + m.Gos(m, func(m *ice.Message) { + for { + select { + case msg := <-c: + s.WriteMessage(MSG_MAPS, []byte(msg.Format("meta"))) + } + } + }) + m.Gos(m, func(m *ice.Message) { // 监听消息 m.Event(ice.SPACE_START, m.Option("node"), m.Option("name")) diff --git a/core/chat/chat.go b/core/chat/chat.go index 26fee9e4..22939371 100644 --- a/core/chat/chat.go +++ b/core/chat/chat.go @@ -407,8 +407,12 @@ var Index = &ice.Context{Name: "chat", Help: "聊天中心", prefix := kit.Keys(kit.MDB_HASH, arg[0], "tool", kit.MDB_HASH, arg[1]) if len(arg) == 2 { // 命令列表 - m.Set(ice.MSG_OPTION) - m.Render("") + if p := kit.Select(m.Option("pod"), m.Option("you")); p != "" { + if m.Cmdy(ice.WEB_SPACE, p, arg); len(m.Appendv("river")) > 0 { + return + } + } + m.Grows(ice.CHAT_RIVER, prefix, "", "", func(index int, value map[string]interface{}) { if meta, ok := kit.Value(value, "meta").(map[string]interface{}); ok { m.Push("river", arg[0]) @@ -441,6 +445,10 @@ var Index = &ice.Context{Name: "chat", Help: "聊天中心", )) m.Log(ice.LOG_INSERT, "storm: %s %d: %v", arg[1], id, arg[i:i+5]) } + + if p := kit.Select(m.Option("pod"), m.Option("you")); p != "" { + m.Cmd(ice.WEB_SPACE, p, arg) + } return }