qian奇岸微信二维码 如您需要快速报价 请加技术经理微信 服务热线
13501992972
"MENU"
首页 > 开发知识 > 正文

WebSocket探寻前端和后端的实时通信

奇岸开发
ahqian.com
11/30/2022
wechat

无需加好友免费技术支持

写这篇就是为了分享我的应用WebSocket探寻前端和后端的实时通信。近些年,微服务是很多开发人员所采用的一种架构设计,微服务架构设计的关键所在标准之一是单一义务标准。

此次共享将科学研究、设计与完成 WebSocket 服务器承担前面(Web 创建应用程序 WebSocket 联接并成为前端和后端中间实时通信的消息中间件(或代理商)。

注:文中不容易详解: WebSocket 或公布-定阅消息方式工作原理。

在大多数情况下,Web 应用程序(前面)必须手机客户端(电脑浏览器)和服务器(后面)间的实时通信。该类测试用例的一些事例包含即时引言、即时协作编写、即时大数据可视化、实时聊天、通告、事情升级等。

假定每一个测试用例都有一个微服务;图中应该如何在手机客户端(前面)和每一个独立的微服务(后面)中间创建。 WebSocket 联接。

以上如图所示,这不是一个典雅的设计方案,特别是当微服务总数提升时,会带来更多 WebSocket 因而,一起来看看联接。 WebSocket 怎样协助服务器解决这些问题?

在微服务架构设计中 WebSocket 服务器高级图

在相关设计里,WebSocket 服务器是唯一的和 Web 创建应用程序(前面) WebSocket 联接微服务。对于一般微服务,与 Web 实时通信应用程序(前面)主要有两种关键方法:

全部微服务(后面到前面)都能通过 API 推送消息 WebSocket 服务器息将采取服务器 WebSocket 分享到 Web 应用程序(前面)。

双重(在前端和后端中间)——Web 可以通过应用程序(前面) WebSocket 向 WebSocket 服务器推送消息,再通过 Pub/Sub 分享到微服务(后面)。

- 根据微服务(后面) Pub/Sub 推送消息 WebSocket 服务器息将采取服务器 WebSocket 分享到 Web 应用程序(前面)。

根据以上设计方案应用 Spring Boot、Stomp 和 Redis Pub/Sub 搭建 WebSocket 服务器。

复位一个 Spring Boot 新项目。至少你必须 Spring Web、Redis 和 Websocket 依赖项。

建立环境变量,WebsocketConfig.kt随后加上下列配备。 Spring Boot 开启应用程序 WebSocket 作用。

一定要注意,在演试条件下,stomp 节点容许全部由来,工作环境不可以这样配备。

开启 Spring Boot Websocket 配置 (WebsocketConfig.kt)

API 节点为微服务(后面) Web 应用程序(前面)推送消息提供了一种方法。由于消息只需单向流(后面) → WebSocket 服务器 → 应用前面) API 微服务(后面) → Websocket 服务器)较好的通讯方式。

用以向 WebSocket 服务器推送消息 API 节点

上边的编码创立了一个含有 POST 要求节点的 REST 控制板,节点接受要求行为主体 NewMessageRequest”,其中topic客户端(前面)定阅 STOMP 总体目标,而且message是字符串数组格式具体消息。有了这些,你如今就可以用了 API 向 WebSocket 服务器根据 WebSocket 分享消息 Web 应用程序(前面)。

注:根据你自己的情景,假如我们不需要, Web 能够省去应用程序(前面)和微服务(后面)间的双重实时通信。

微服务(后面和 Websocket 根据服务器) API 实时通信不是最佳的通讯。因而,针对双向通信,可以用公布-定阅消息方式。

完成公布-定阅消息传送方式方法有很多,但是为了演试和简易考虑,我们将要使用这些 Redis Pub/Sub。

最先,应用 docker ( docker run — name redis-server -p 6379:6379 -d redis) 在当地运作 Redis 在服务器中加入下列配备 application.yml 确保在文档中 WebSocket 传送到服务器 Redis 服务器。

# application.yml

spring.redis:

服务器: localhost

端口号: 6379

下面,建立环境变量 ,RedisConfig.kt并在下文加上配备。实质上,大家正在配置一个ReactiveRedisTemplate与 Redis 服务器通讯并把信息实例化和反序列化为字符串数组。

以后,创建一个RedisService包含定阅和公布 Redis 服务器的思路。在下文的事例中,大家定阅了出入口的主题GREETING_CHANNEL_INBOUND,主题监听来源于别的微服务(后面),并把收到全部信息发送给 STOMP 终点/topic/greetings。

最终,创建一个Controller解决来源于 Web 应用作为前缀的应用程序(前面)消息 发送至 WebSocket 服务器/app。下列实例中上传的消息/app/greet出来安全通道主题分享(公布)GREETING_CHANNEL_OUTBOUND,再由已经监听该通道一切微服务(后面)解决。

那样,我就会 WebSocket 根据消息中间件(或代理商)设定服务器 WebSocket 与 Web 根据应用程序(前面)开展通讯 Redis Pub/Sub 通讯微服务(后面)。

运行 WebSocket 并用服务器 WebSocket 根据程序调试专用工具 STOMP 协议书传送到 WebSocket 服务器。联接后,配备 WebSocket 程序调试专用工具定阅主题/topic/toast。

下面,运用下列指令 WebSocket 服务器推送 HTTP POST 要求:

curl -X POST -d "{"topic": "/topic/toast", "message": "检测 API 节点" }" -H "Content-Type: application/json"

localhost:8080/api/notification

WebSocket 调试工具应主要有以下导出:

这说明 WebSocket 服务器已通过 API 取得成功接到消息并且通过 WebSocket 分享消息 Web 应用程序(前面)。

运行 WebSocket 并用服务器 WebSocket 根据程序调试专用工具 STOMP 协议书传送到 WebSocket 服务器。联接后,配备 WebSocket 程序调试专用工具定阅主题/topic/greetings。

应用 Redis CLI,应用指令将消息分享到安全通道主题GREETING_CHANNEL_INBOUND PUBLISH GREETING_CHANNEL_INBOUND “"Test Message from Backend PubSub"”。

由于 WebSocket 服务器配备为接受字符串数组信息,所以需要额外具体内容。WebSocket 程序调试专用工具应接到下列信息

这表明 WebSocket 服务器已通过 Redis Pub/Sub 取得成功接到消息并且通过 WebSocket 分享消息 Web 应用程序(前面)。

运行 WebSocket 并用服务器 WebSocket 根据程序调试专用工具 STOMP 协议书传送到 WebSocket 服务器。联接后,应用 Redis CLI,应用指令定阅频道栏目主题GREETING_CHANNEL_OUTBOUND SUBSCRIBE GREETING_CHANNEL_OUTBOUND。应用 WebSocket 调试工具方位 STOMP 终点推送消息/app/greet,您应观查以下几点:

这表明 WebSocket 服务器已通过 WebSocket 取得成功接到消息并且通过 Redis Pub/Sub 将消息分享到微服务(后面)。

总而言之,微服务架构设计已完成 WebSocket 可能性的服务器设计方案。 WebSocket 服务器的监管与微服务的单一义务标准十分一致 Web 全部应用程序(前面) WebSocket 联接,解决 Web 实时通信应用程序(前面)和其它微服务(后面).

热度395

了解更多WebSocket探寻前端和后端的实时通信欢迎联系奇岸开发客服。

奇岸开发可定制企业官网小程序、小程序商城、餐饮外卖小程序、预约小程序、多门店小程序、分销小程序及个人小程序。

微信二维码

微信长按识别或扫一扫,无需加好友直接咨询,企业网站开发、网站托管维护、企业管理系统开发、微信小程序制作、域名主机、网站备案、网站改版等提供专业技术解答。

精彩推荐

猜你喜欢