• 我的订阅
  • 科技

ActionCable 和 React 初学者

类别:科技 发布时间:2023-05-08 09:15:00 来源:卓越科技

介绍

每个人都熟悉HTTP,无论他们是否知道。作为Web开发人员,我们知道它是一种用于从客户端向服务器发送和接收请求的互联网协议。典型的交换看起来像这样:

ActionCable 和 React 初学者

但有时,我们希望与他人进行实时互动。例如,Discord或Slack上的用户不会手动刷新他们的应用程序来获取新消息,它们只是被接收。为了满足这种实时更新的需求,我们可以使用WebSockets。

简而言之,WebSocket是一种替代互联网协议,允许在客户端和服务器之间进行动态双向通信。用户不会请求新信息(如刷新页面以加载新帖子),而是在广播时接收数据。

在这篇文章中,我将向您介绍如何使用RailsActionCable和React前端设置一个基本的聊天室。

配置

首先,我们将运行基本的应用程序配置。

在目录中创建一个新的RailsAPI。railsnewchat_app--api

导航到新创建的目录并创建ReactClient

#/chat_appnpxcreate-react-appclient

安装@rails/actioncable到你的React客户端

#/chat_appnpmi@rails/actioncable--prefixclient

在Gemfile中,取消注释“rack-cors”

ActionCable 和 React 初学者

这篇文章不会进入部署阶段,但如果您打算这样做,请取消注释“redis”并添加“pg”PostgreSQLgem并根据需要更改您的数据库适配器。此示例不会进行部署,因此您可以保留“sqlite3”gem和默认设置。

取消注释此中间件并将origins更改为“*”以用于开发目的。请注意,如果您正在部署,则必须将来源更改为您的应用程序域。

ActionCable 和 React 初学者

最后,安装您的gem和客户端依赖项。

#/chat_appbundleinstallnpminstall--prefixclient

导航

要设置WebSocket连接,我们需要配置前端和后端以创建“握手”或连接。我们将从建立后端开始。

在Rails中,让我们为消息模型生成一个脚手架。我们将使事情保持简单,并且我们的模型只有一个内容属性。

railsgscaffoldMessagecontent#Don'tforgettomigraterailsdb:migrate

转到/app/config/routes.rb,我们可以看到Rails已经为我们的消息生成了资源。但我们还需要为我们的ActionCableWebSocket服务器声明端点。

ActionCable 和 React 初学者

我们有一个模型,它是控制器和一个服务器端点“localhost:3000/cable”。接下来我们需要一些东西来管理我们的连接和请求:一个Channel。

与MVC中的控制器一样,通道充当接收请求并根据其接收到的定义操作处理这些请求的单元。

railsgchannelChat

ActionCable 和 React 初学者

在中app/channels/chat_channel.rb,您将看到我们的ChatChannel具有两个默认操作:订阅和取消订阅。当用户尝试与我们的服务器建立WebSocket连接时,它会说明请求的类型和通道。我们可以做不同的事情来处理请求,例如添加身份验证令牌,但我们将专注于通道的主要功能:流式传输。

您可以从特定字符串、动态内插字符串甚至模型实例声明流。在所有情况下,用户请求订阅ChatChannel,而ChatChannel将作为回报建立连接并从指定源流式传输。

ActionCable 和 React 初学者

该项目将继续使用stream_from"chat"配置,因此我们将注释掉其他示例。

现在我们已经为用户建立了一种连接到我们的WebSocket服务器的方法,我们需要定义我们的服务器何时实际向我们的用户广播信息。

通常,当用户创建新消息时,我们希望向我们的频道广播数据。

ActionCable 和 React 初学者

ActionCable.server.broadcast("chat",@message)告诉我们的服务器将我们广播@message到流“聊天”。如果您从模型广播,则需要使用不同的语法,请参阅https://guides.rubyonrails.org/action_cable_overview.html。

react

为简洁起见,我将只介绍在前端设置WebSockets。

在/app/client/src创建一个新文件cable.js。这将管理我们客户端“消费者”的创建。

ActionCable 和 React 初学者

请注意,我们的协议URL现在是“ws”而不是“http”。这将告诉我们的服务器用户正在尝试建立WebSocket。

在中App.js,我们希望客户端向我们的ChatChannel发出订阅请求。感谢@rails/actioncable我们还可以描述当我们连接时我们想要发生什么,以及当我们接收数据时(如果我们的连接已建立)。

ActionCable 和 React 初学者

从我们的后端,我们可以通过查看我们的终端来查看请求是否成功。

ActionCable 和 React 初学者

当我们向后端发出发布请求时,我们的消息控制器将我们的消息广播到“聊天”流。

ActionCable 和 React 初学者

当它广播时,我们的客户被设置为setMessages使用接收到的信息。

您可以通过在隐身窗口中打开应用程序来查看实时更新。您会注意到,每当对方发送消息时,两者都会更新。

结论

WebSocket是允许用户进行交互式通信的好工具。一开始我很难真正掌握其中的一些示例,所以我希望这提供了一个非常基本的说明,说明如何使用ReactFrontend应用程序设置ActionCable。我没有涉及连接请求的管理或说明多流的使用,但我认为这展示了如何让聊天室运行的基础知识。让我知道是否有任何我遗漏的内容或任何您希望我介绍的内容!

举报/反馈

以上内容为资讯信息快照,由td.fyun.cc爬虫进行采集并收录,本站未对信息做任何修改,信息内容不代表本站立场。

快照生成时间:2023-05-08 18:45:16

本站信息快照查询为非营利公共服务,如有侵权请联系我们进行删除。

信息原文地址:

利用行空板单板计算机打造智能家居系统
...T11传感器,以全方位监测室内温度变化。该项目被设计为初学者友好的家庭自动化门户,通过简单步骤和最少的组件,您将不可思议地发现您所创造的空间魔法将如此轻松融入生活中。让我们一
2024-04-29 15:30:00
好玩的B端组件 丨 上传组件
...小伙伴可以看一下。https://gevoaf.axshare.com/小结对于大部分初学者来说,上传组件就只是一个带有“选择文件”的按钮
2023-04-18 16:00:00
python的基础知识和应用
...,因其简洁的语法和丰富的库而受到广泛欢迎。无论你是初学者还是经验丰富的开发者,Python都能为你提供多种可能性和应用领域。本文将深入探讨Python的主要应用领域,并通过实
2024-10-12 10:41:00
内部软件技术文档怎么做?
...编辑内容,就可以直接预览内容,避免出现错误。即使是初学者,也能制作出一张精美实用的帮助中心和产品手册。案例展示制作方法
2023-02-24 14:18:00
刚插上网线,电脑怎么知道自己的ip是什么
...P的工作原理也非常简单。说白了,就是向某个管IP分配的服务器,也就是 DHCP服务器,申请IP地址。其实一般家里用的路由器就自带这个功能
2022-12-27 11:01:00
...俄紧急情况部回应称,这是因为上述广播电台和电视台的服务器遭到了攻击,其播放的内容“不属实”。《共青团真理报》报道称,节目中突然出现消息称,“存在导弹袭击威胁。请注意!请注意!
2023-03-01 15:06:00
联想集团透露AI服务器等基础设施业务收入超20亿美元
【科技圈】联想集团透露AI服务器等基础设施业务收入超20亿美元6月15日,联想集团ISG公布其全球AI基础设施业务年度收入突破20亿美元,并公布其下一阶段增长战略,即未来三年将追
2023-06-15 22:45:00
如何提高im服务的用户体验
...素。为了提高消息传输速度,可以采取以下措施:1.优化服务器架构:采用分布式服务器架构,将用户消息分散到多个服务器进行处理,降低单台服务器的压力,提高消息处理速度。2.使用高效
2024-06-29 02:55:00
2024 年十大知识库软件
...不同的软件解决方案。G2CrowdG2Crowd有很多类别选项,对于初学者来说可能有点不知所措。除此之外,G2Crowd还发布了比较同一市场中不同解决方案的软件研究
2024-07-19 11:47:00
更多关于科技的资讯:
文具大礼包到数码全家桶,黔西南兴义“开学经济”多元消费场景火爆
随着贵州省2025年秋季学期正式开学,黔西南州各中小学和幼儿园敲响了上课铃,沉寂了一个暑假的校园,恢复了琅琅书声。新学期
2025-09-14 19:28:00
强数字动能,拓发展新局!贵州推动数字经济高质量发展
在国家大数据(贵州)综合试验区交流体验中心,正门口一个由圆形LED屏构成的“数据之眼”十分醒目。这个独特的设计,寓意世界将从这里看见不一样的贵州
2025-09-14 12:11:00
2025年上半年,工银私人银行凭借在综合实力、数字化运营、专业服务、全球网络及绿色可持续发展领域的突出优势,荣获“卓越私人银行奖”“中国最佳数字化营销与传播私人银行”“中国最佳数
2025-09-14 11:45:00
脱口秀演员「炸现场」,喜剧综艺「炸市场」
伴随《喜剧之王单口季》第二季(下称《喜单2》)圆满收官,一众“小人物”也终于走出心底的浪浪山:翟佳宁一语点醒内耗人:唯心主义的最高境界是唯我独尊
2025-09-14 06:43:00
日前,山西转型综改示范区入区企业潞安化工机械(集团)有限公司成功通过国家市场监督管理总局的严格审核,获颁压力容器分析设计(SAD)许可资质
2025-09-14 07:28:00
机器隆隆,一排排制作好的夹芯板整齐排列,格外亮眼。连日来,山西钢构科工有限公司围护结构智能制造车间内机器轰鸣、智能设备有序运转
2025-09-14 07:28:00
百度发债,释放何种信号?
9月8日,百度宣布计划于美国境外以离岸交易方式,发行以人民币计值的优先无担保票据;票据发行所得款项净额将用作一般公司用途
2025-09-13 09:38:00
不挤牙膏、全面堆料,iPhone 17能赢回中国用户吗?
“透视图”是36氪新推出的轻量化数据图文栏目——以数据透视趋势,以图片呈现要点。"Talk is Cheap. Show me the data
2025-09-13 14:55:00
全网高呼“小米太子你糊涂啊”,他被辞退揭开大厂的头号隐患
数日前人们讨论得有多热闹,如今的沉默就多震耳欲聋。小米辞退被外界称为“雷军接班人”的王腾一事,似乎再无下文。就连王腾以前几乎天天发的微博
2025-09-13 23:24:00
鲁网9月12日讯近日,北京国际大数据交易所专家朱大培携蘑菇车联信息科技有限公司、北京优锘科技有限公司、泰安协同软件有限公司一行来高新区调研数据要素相关工作
2025-09-13 08:51:00
德百家电澳德乐店开业盛典暨卡萨帝美食争霸赛报名火热开启
鲁网9月12日讯(记者 逯广宇 实习记者 李安琦)当智能科技邂逅舌尖美味,一场兼具创意与惊喜的盛宴即将登场!9月10日
2025-09-13 09:26:00
江苏南京:机器人“交警” “上岗”倒计时
机器人“交警” “上岗”倒计时能指挥交通,会查酒驾和巡逻,正由宁企携手国内人形机器人“领头羊”联手开发众擎机器人未来将走上大街
2025-09-13 09:57:00
济南能投集团斩获CMMI5级国际认证,软件研发实力跻身国际领先水平!
近日,济南能投集团山东和同信息科技股份有限公司(以下简称“和同信息”)成功通过全球软件能力成熟度模型集成最高等级——CMMI5级认证
2025-09-13 12:04:00
济南能源投资控股集团2025年高校毕业生业务轮训圆满收官
9月12日,济南能源投资控股集团2025年高校毕业生业务轮训工作正式落下帷幕。本次轮训为期两周,聚焦新入职大学生成长需求与能投集团人才储备目标
2025-09-13 12:11:00
数智化会员经济峰会暨数韵商城产业集群品牌盛典圆满落幕!
数智化会员经济峰会暨数韵商城产业集群品牌盛典2025年9月9日,湖南长沙星光熠熠、热潮涌动!绿之韵·数韵国际重磅打造的数智化会员经济峰会暨数韵商城产业集群品牌盛典盛大启幕
2025-09-13 15:20:00