如何使用 Go 和 gorilla websocket 仅发送给一个客户端而不是所有客户端

2023-12-01

我正在尝试用 Go 学习 websocket。我一直在研究 gorilla websocket 的示例。

我已经查看了这两个示例,展示了如何使用 gorilla websocket:

https://github.com/gorilla/websocket/tree/master/examples

https://www.youtube.com/watch?v=ysAZ_oqPOo0

所有这些示例都展示了如何连接到 websocket 服务器、发送和接收文本。但我不明白的是你如何可以只发送给一个客户。因为在现实世界的应用程序中,您将拥有用户,并且我们不希望所有用户都收到相同的消息和相同的数据。有没有办法让我获得连接的唯一 ID,我可以将其保存在像 Redis 这样的数据库中,并将其链接到同一数据库中的用户 ID,然后使用该 WebSocket ID 发送回特定客户端(如果可以)用户 ID 收到消息或通知?这是一个人会如何去做并实现这样的事情吗?如果是这样的话,我该怎么办?


有没有办法让我获得连接的唯一ID 保存在像 redis 这样的数据库中,并将其链接到同一个数据库中的用户 ID 数据库,然后使用该 websocket id 发送回特定的 客户端该用户 ID 是否收到消息或通知?

当然!用户注册时可以自行生成Id。只需添加 userId 字段即可connection结构

在聊天示例中,您有集线器,其中包含连接池。该池用于向所有用户广播消息:

case m := <-h.broadcast:
    for c := range h.connections {
        select {
        case c.send <- m:
        default:
            close(c.send)
            delete(h.connections, c)
        }
    }
}

所以就这样吧。您应该制作发送私人消息的方法,取决于 userId

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Go 和 gorilla websocket 仅发送给一个客户端而不是所有客户端 的相关文章

随机推荐

  • 为什么静态和寄存器存储类不能一起使用?

    当按以下方式定义变量时 static register int a1 0 我们得到错误 error multiple storage classes in declaration specifiers 这个错误有什么根本原因吗 为什么变量不
  • PHP服务器端帖子

    我正在尝试让服务器端 POST 在 PHP 中工作 我正在尝试将交易数据发送到支付网关 但我不断收到以下错误 信息 fopen https secure ogone com ncol test orderstandard asp 无法打开流
  • JavaScript:可选回调? [复制]

    这个问题在这里已经有答案了 我编写了一个函数 它有 3 个参数 其中一个是回调函数 如何使回调成为可选参数 而不必编写另一个没有回调参数的函数 function myFunction arg1 arg2 callback do someth
  • 从数组中返回奇数或偶数

    只是需要帮助来确定我在这个代码战争挑战中做错了什么 我意识到这对某些人来说可能很容易 但请注意我只是 Javascript 的初学者 挑战 给你一个数组 长度至少为 3 但是 可能非常大 包含整数 该数组要么完全是 由奇数整数组成或完全由偶
  • 继承鉴别器的 .NET Linq to SQL 性能问题

    我遇到了具有大量继承类的 LINQ to SQL 模型的性能问题 我隔离了这个问题 它似乎是 LINQ to SQL 生成的代码本身的某种问题 我使用 Northwind 创建了一个示例程序来充实这个问题 在这两种情况下 它都会返回 Cus
  • 迭代向量时 typeid.name() 不会改变。动态转换和 typeid 基类指针

    答 总之用虚函数 因此 实际上不要将其用作良好的设计 但出于学习目的 请阅读 首先我想说我正在使用 c 和 Qt 我有一个形状指针向量 基类 编辑 doSomething 不是基类的成员 而是派生类的成员 这就是为什么我使用dynamic
  • 多部分/表单数据的问题

    当我的表单包含多部分 表单数据时 我无法从 servlet 中的文件和文本输入获取值 我正在使用 apache commons fileuploads 来帮助上传 有什么建议 另外 在下面的代码中 有一些我认为应该更有效的事情 有没有更好的
  • 在mysql中使用select into局部变量和准备好的语句

    每次调用此存储过程时我都会收到此错误 1064 You have an error in your SQL syntax check the manual that corresponds to your MySQL server vers
  • Jquery:元素数组的事件监听器

    我使用以下方法用元素填充数组 each 方法和 this 选择器 function var elements new Array var index 0 img each function if this attr attribute th
  • 如何检测文本中只有空格的行?

    鉴于 空行 是一个空格 我正在尝试逐行读取文本文件 我想忽略空白行 或者以更正确的方式 我想检测空行 空行可以包含空格 换行符等 并且它仍然被视为空行 如果您在记事本中打开它 在空行中您不应该看到任何内容 有没有一种快速的方法可以在Pyth
  • Python 从标准输入中读取参数

    我想从 python stdin 读取数据 但也想在我的程序中拥有输入选项 当我尝试将选项传递给我的程序时 我收到错误文件未找到并且我的参数被丢弃 为了解析参数 我使用以下代码 parser argparse ArgumentParser
  • 在 C++ 中更改带有前导零的十六进制数的位,(C)

    我有这个十六进制字符串的数字 002A05 我需要将这个数字的第 7 位设置为 1 所以转换后我会得到 022A05 但它必须适用于每 6 个字符的十六进制数字 我尝试通过 strtol 将十六进制字符串转换为整数 但该函数去掉了前导零 请
  • 找到最适合n个球体交点的点

    我有一系列带有距离的点 我希望找到一个最能满足以下条件的点 for point i distance i in pointArray abs point point i distance i 我认为这可以通过某种回归或最小二乘来解决 但我在
  • 如何从 OpenShift DATA_DIR 提供上传的图像

    我的应用程序在 JBoss EAP 上运行 我想将图像上传到 OPENSHIFT DATA DIR 然后将它们的相对路径保存在 MySQL DB 中 因为我需要构建图像的路径 然后在需要时将它们提供给浏览器 If my OPENSHIFT
  • 使用 JavaScript 动态计算总和

    我有两个文本框Num1 and Num2和另一个文本框Sum具有价值10 如果用户输入一个数字 我该如何做到这一点Num1 它将添加到Sum并动态改变显示的数字Sum文本框 如果用户输入一个数字Num2它还会将该数字添加到显示的更新数字中S
  • 如何将数据从过滤器传递到 Jersey 中的端点

    您可以在不使用 ThreadLocal 或 HttpSession 的情况下将一些数据从 javax servlet Filter 传递到 Jersey 端点吗 因为第一个问题是 你为什么要这样做 主要是好奇 在实践中 我认为我可以使用它来
  • 定义带或不带导出的变量

    What is export for 有什么区别 export name value and name value export使变量可用于子流程 That is export name value 表示变量名可用于任何过程你从那个 she
  • Java 编译器错误消息“预期”是什么意思?

    class if public static void main String args int x 9 if x lt 9 System out println Yay else System out println Yay 我从编译器运
  • 椭圆曲线乘法函数

    我正在尝试为椭圆曲线创建自己的库 有些事情有效 但有些则无效 要从私钥计算公钥 您应该将生成点与私钥相乘 然后得到另一个点 公钥点 ECPoint BigInteger ECPoint 现在 我有一个私钥 并将其与 Secp256k1 曲线
  • 如何使用 Go 和 gorilla websocket 仅发送给一个客户端而不是所有客户端

    我正在尝试用 Go 学习 websocket 我一直在研究 gorilla websocket 的示例 我已经查看了这两个示例 展示了如何使用 gorilla websocket https github com gorilla webso