登录
首页 >  Golang >  Go问答

传输消息到同一客户端的两个不同协议路由的最佳方法

来源:stackoverflow

时间:2024-03-01 11:09:24 362浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《传输消息到同一客户端的两个不同协议路由的最佳方法》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

我有一个 http 路由 /checkout,它在 Zeebe 中启动工作流程。 checkout 路由将立即向调用客户端返回 200 响应。现在,工作流程将运行一段时间。因此,为了在完成后将响应推送回客户端,我为服务器发送的事件提供了 /sse 单独的路由。在这里,我将所有客户端连接存储在全局 map 中。

我的疑问是如何找到确切的客户端通过 sse 发送一次响应?

  • 示例:客户端 A 监听 /sse 并调用 /checkout 端点,该端点将返回 200。 /sse 必须在之后将响应返回给客户端 A完成。

目前我想到的是使用cookie来识别客户端。有更好的办法吗?


正确答案


如果您已经在应用程序中使用 Cookie,那么就应该这样做,因为 Cookie 的真正目的是识别客户端,因此如果您已经拥有了 Cookie,则应该使用它。

但是如果您依赖其他身份验证机制(例如 JWT),您可以使用 url 作为查询。

所以在客户端而不是

let eventSource = new EventSource("/sse");

let eventSource = new EventSource("/sse?authorization=jwt_token");

在后端,您将验证该令牌、提取客户端 ID 并使用它点击该全局映射以检索相应的连接。

(PS:您应该使用适当的存储(例如 redis)或嵌入式键/值存储(例如 bbolt),而不是全局地图)

今天关于《传输消息到同一客户端的两个不同协议路由的最佳方法》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>