实时推送通知golang

时间:2017-08-15 20:24:24

标签: javascript go websocket

我想在我的网络应用程序中实现实时通知功能。我正在关注此示例“https://github.com/gorilla/websocket/tree/master/examples/chat”。我需要服务器(集线器)来获取消息,它需要根据某种形式的ID将这些消息推送到各个客户端。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

从你提到的样本中:

    case message := <-h.broadcast:
        for client := range h.clients {
            select {
            case client.send <- message:
            default:
                close(client.send)
                delete(h.clients, client)
            }
        }
    }

这是向所有客户端广播消息的情况。正如您所看到的,它遍历所有已注册的客户端,并将消息发送给它们中的每一个。

要保留此功能,我们只需添加另一种情况:发送到单个客户端。

    case message := <-h.clientMessage:
        for client := range h.clients {
            if message.ClientID == client.ID {
                select {
                case client.send <- message:
                default:
                    close(client.send)
                    delete(h.clients, client)
                }
            }
        }
    }

这应该会给你一个想法。其余的我留给你。

注意:我的示例代码可以通过以下方式优化:使用map[clientID]Client直接访问客户端。