WebSocket工作原理及使用方法

它有很多名字; websocket,websocket协议和websocket api。从首选的消息传递应用程序到流行的在线多人游戏,websocket在当今最常用的web应用程序中是至关重要的。
根据定义,websocket是通过单个tcp连接提供全双工(双向通信)通信信道的计算机通信协议。此websocket api可在用户的浏览器和服务器之间进行双向通信。用户可以向服务器发送消息并接收事件驱动的响应,而无需轮询服务器。 它可以让多个用户连接到同一个实时服务器,并通过api进行通信并立即获得响应。
websockets允许用户和服务器之间的流连接,并允许即时信息交换。在聊天应用程序的示例中,通过套接字汇集消息,可以实时与一个或多个用户交换,具体取决于谁在服务器上“监听”(连接)。
websockets不仅限于聊天/消息传递应用程序。它们适用于需要实时更新和即时信息交换的任何应用程序。一些示例包括但不限于:现场体育更新,股票行情,多人游戏,聊天应用,社交媒体等等。
websockets还会考虑代理和防火墙等危险,使得任何连接都可以进行流式传输。它支持单个连接的上游和下游通信。 它还减轻了服务器的负担,允许现有机器支持同时连接。
这是现代web应用程序中的示例实现websockets。在下面的示例中,我使用websockets作为带有rails 5 api后端和react.js前端的即时消息应用程序。这绝不是一个指南,而是一个如何使用它的例子。我使用了action cable,它是rails的包装器,可以无缝地集成ruby中websockets的主要功能,并允许在整个域模型中轻松实现。 它内置于rails 5.2中,因此无需安装/执行任何外部库或gem。
它的工作原理是pub-sub(发布和订阅)。它适用于发送者将数据(发布者)发送给抽象数量的收件人(订阅者),而无需指定他们是谁。
第一步是将服务器挂载到路由文件中,这样前端就可以从流中得到endpoint:
在第5行,我设置了actioncable服务器端点
下一步是在后端创建一个通道,以便在实时创建消息时对消息进行流式处理。
这是管理消息创建以及广播消息的消息通道
这里我们有两种方法,订阅和接收。订阅的第一种方法允许将消息通道流式传输到连接的用户或订户。 接收的第二种方法管理消息创建和广播消息。我实现了jwt用户身份验证,以便可以将消息追溯到用户,只有具有有效用户帐户的消息才能创建消息。
对于我的应用程序的前端,我使用它们npm package actioncable从客户端到服务器端连接到websocket api。 这个包直接来自于rails的团队。 使用此库,我实例化了一个cableapp实例,并将其作为props传递给需要访问websocket连接的组件。
导入actioncable并创建了一个cableapp实例,然后将cableapp连接到我的后端端点“/ cable”并将其传递给需要连接的组件
然后,我通过react.js生命周期方法componentdidmount()连接到websocket的连接,并在每次将组件安装到dom时建立连接。
在componentdidmount()中,我建立了客户端以连接到websocket协议,该协议从我的rails api中的“messageschannel”流式传输。
现在,每次创建消息并将其发送到接收方法时,订阅(d)用户将立即接收并能够实时查看消息。此实现支持订阅同一频道的多个用户。因此,如果多个用户签名并订阅了相同的频道,他们可以发送所有订阅者都能看到的消息以及从其他订阅者接收消息。当然,你可以限制为两个人,并使它成为p2p,但是那样还有什么乐趣呢?
我希望通过阅读本文,可以看到websockets的潜力。它使自己成为一个宝贵的资源,在这个时代,信息交换需要很快完成。 希望读者将在自己的项目中实现它们。

NetApp扩大全球云市场领导地位,加速推进数字化转型
耐克森入局工业互联网,推出智能库存管理解决方案
AR相机如何增加产品粘性和差异化?
RC正弦波振荡器测量、调试
谷歌为电信运营商提供了计划,帮助他们通过人工智能来增强CX
WebSocket工作原理及使用方法
特斯拉股价的一路飙升 未来仍然具有充足的发展前景
索尼新一代OLED旗舰A9G应运而生 充分占领技术制高点
2020年临安第一批工厂物联网项目备案计划
linux c程序获取shell脚本输出
电磁污染的危害与防治
Android 之父回归后做的这款手机亮点可不止那块屏幕
罗德与施瓦茨频FSH18谱分析仪10MHz至18GHz
SUNLORDINC顺络电子提供小尺寸大电流铁氧体磁珠PZ0603系列
ThinkPad新款人体工程学鼠标,采用Nano USB接收器实现无线连接
敦泰:明年仍保持谨慎态度
华为智能手机元器件供应受阻 或与安卓12无缘
7月成都,一场不容错过测试测量行业的盛会
磐石测控:深圳全自动弹簧试验机怎么测试精度?
安防与云技术的融合已经成为了一种必然趋势