AWS 使用ivs chat 实现直播聊天功能

什么是IVS Chat Rooms

Amazon IVS Chat 是一种可扩展的流式聊天功能,具​​有内置的审核选项,旨在伴随实时流式视频。通过 IVS Chat,观众可以通过提问和参与讨论来建立社区关系。IVS Chat 提供房间资源管理和用于发送、接收和审核聊天消息的消息传递 API。

原理图
在这里插入图片描述

需求介绍

1. ivs chat 直播聊天功能
2. 聊天内容审查机制,提供给lambda的自定义处理方案

我们今天就配合ivs chat 来实现带有审核机制的直播聊天室,话不多说先上这块的架构图
在这里插入图片描述

IVS Chat: 是IVS的聊天室功能,IVS Chat 提供了wws用于我们使用websocket 去send聊天信息
Check IVS Chat Lambda:用于check 聊天室是否有非法字符和一些相关聊天信息的缓存逻辑
DynamoDb:非关系型数据库,是aws提供的NoSQL,可以实现无缝扩展和高可用。
Web Lambda: 直播web应用程序
api gateway: api 网关用于 client 请求weblambda的一个中间层。
redis:是用来缓存ivs chat token信息和其他数据的

由于我们是在做实验所以我们先手动创建一个IVS Chat Rooms

创建一个lambda并绑定一个role

在这里插入图片描述

给role添加ivs chat 的策略

在这里插入图片描述

创建一个IVS Chat Rooms

在这里插入图片描述

我们创建一个ivs chat rooms 输入聊天室名称和开启审核处理程序,很显然审核处理程序的业务逻辑需要我们自己实现,我们的框架设计也是这样实现的。

在这里插入图片描述

创建完成后我们可以看到几个数据:1.arn: 是我们在调用ivs chat rooms的aws boto3的api的时候我们会用到这个,用于标识我们在操作的是那个chat rooms2.Messaging endpoint:消息传递端点是需要我们发送信息的时候需要用websocket 建立连接的时候使用的。3.Chat tokens: 我们在连接websocket的时候需要用的token认证,这个token可以创建很多个,但是token是有生命周期的,我们需要将token缓存的redis里面用于发送给前端在建立连接的时候使用。

好我们构建聊天室的前置工作都做完了

如何使用python实现websocket send message

上代码

#client.py
from signal import signal, SIGPIPE, SIG_DFL  
signal(SIGPIPE,SIG_DFL)
s_url = "这里是Messaging endpoint"
chat_client_token = "这里是Chat tokens 在业务代码里面是从redis里面获取的"
import uuid
import json, time
import websocket
import threading
def run(ws):while True:message = input()print(message,1111)payload = { "Action": "SEND_MESSAGE","RequestId": str(uuid.uuid1()),"Content": message,"Attributes": {"CustomMetadata": "test metadata"}}ws.send(json.dumps(payload))def open(wsapp):thread = threading.Thread(target=run,args=(wsapp,))thread.start()def on_message(wsapp, message):print(message)def on_error(wsapp, err):print("EXAMPLE error encountered: ", err)def on_cont_message(wsapp,):message = input()print(message,1111)payload = { "Action": "SEND_MESSAGE","RequestId": str(uuid.uuid1()),"Content": message,"Attributes": {"CustomMetadata": "test metadata"}}ws.send(json.dumps(payload))
protocol_str = "Sec-WebSocket-Protocol: " + chat_client_tokenws = websocket.WebSocketApp(url = s_url, header=[protocol_str], on_message=on_message, on_error=on_error, on_open=open)
ws.run_forever()
# check ivs lambda
import json
import boto3def lambda_handler(event, context):# TODO implementprint(event)client = boto3.client('ivschat')if event.get('Content') == "www":response = client.delete_message(id=event.get("MessageId"),reason='ceshi',roomIdentifier=event.get("RoomArn"))print(response)return {'statusCode': 200,'body': json.dumps('Hello from Lambda!')}

代码逻辑

1. 我们使用的websocket中的WebSocketApp,WebSocketApp对websocket做了进一步的封装并提供了几种回调方案,例如:on_message, on_open, on_error, on_closeurl: websocket的地址。header: 客户发送websocket握手请求的请求头,{'head1:value1','head2:value2'}。on_message: 这个对象在接收到服务器返回的消息时调用。有两个参数,一个是该类本身,一个是我们从服务器获取的字符串(utf-8格式)。on_open: 在建立Websocket握手时调用的可调用对象,这个方法只有一个参数,就是该类本身。on_error: 这个对象在遇到错误时调用,有两个参数,第一个是该类本身,第二个是异常对象。on_close: 在遇到连接关闭的情况时调用,参数只有一个,就是该类本身。on_cont_message:这个对象在接收到连续帧数据时被调用,有三个参数,分别是:类本身,从服务器接受的字符串(utf-8),连续标志。on_data:当从服务器接收到消息时被调用,有四个参数,分别是:该类本身,接收到的字符串(utf-8),数据类型,连续标志。run_forever:用于做websocket长连接的,可以通过源码我们可以看到她在不停的 
2.我使用ws.run_forever()简历了长链接,因为我们首次建立连接websocket 会回调on_open函数,这时候我们开一个线程来做send message的动作,
将我们要发送的消息投送到IVS Chat 的server里面去,这时候IVS Chat 会触发lambda函数从而进行对消息的check,看是否是合法的和将聊天信息存入
到数据库里面。
3. check ivs lambda 这是一个测试代码,这段代码主要是我们遇到www的信息就删除它,我们来看一下效果。

当我们使用发送别的信息的时候,我们可以看到type是message 说明我们发送成功了
在这里插入图片描述
当我们发送www的时候我们可以看到多了一条type为event的回调消息,Eventname是DETETE_MESSAGE,说明我们已经将这条消息删除了,前端小朋友只要收到这条消息就可以将消息删除掉了。
在这里插入图片描述
好了这就是我们这次IVS Chat 实现聊天功能的实验代码,具体的功能还需要按照项目需求去精心的打磨

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/59870.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10种实用的Prompt技巧图解

收集整理了prompt engineering的10种实用技巧,以图解的方式解释了它们的主要原理。 本文追求以极简风格逼近这些方法的第一性原理,把黑话翻译成人话,并使用图片范例进行说明。 同时也加入了一些自己的理解,如有出入欢迎指正。 一&…

【AI】清华开源中英双语对话模型ChatGLM2-6B本地安装笔记

清华开源中英双语对话模型ChatGLM2-6B本地安装笔记 首先,直接上资源,网盘中是ChatGLM2-6B源码及模型文件: 链接:https://pan.baidu.com/s/1DciporsVT-eSiVIAeU-YmQ 提取码:cssa 官方的Readme已经很详尽了&#xff0…

显示/限制输入框的字数

<textarea rows"4" maxlength"50" placeholder"请输入您的口味偏好(可不填)"></textarea> <div class"limitnum"><span class"word">0</span>/50字</div> $("textarea").k…

靶场外传丨迎头赶上or弯道超车?中国网络靶场发展历程研读

从爱因斯坦计划到网络曼哈顿计划&#xff0c;全球网络靶场的发展历程折射出网络安全发展的趋势&#xff0c;从对设备、系统的仿真构建与安全性研究开始&#xff0c;逐步发展为在国防、科研、经济领域的关键系统。全球网络靶场经过14年的发展&#xff0c;已经呈现出军民两用、一…

3G与全业务运营应高度重视网络信息安全

本文讲的是 3G与全业务运营应高度重视网络信息安全&#xff0c; 11月6日至7日&#xff0c;由人民邮电报社、中国信息产业网主办&#xff0c;埃普威承办的“2009中国通信行业网络信息安全峰会(第四届)”在北京举行&#xff0c;400余名专业人士参会&#xff0c;围绕业界关注的网络…

岁末年初,“2018年度赛可达优秀产品奖”获奖名单揭晓了……

近日&#xff0c;由第三方信息安全测评认证机构——赛可达实验室主办的“2018年度赛可达优秀产品奖&#xff08;SKD AWARDS&#xff09;”颁奖盛典在京隆重举办。 腾讯、百度安全、360企业安全、奇元科技、京东云、瑞星、天空卫士、深信服、蓝盾、辰信领创、美创科技等16家单位…

内推 | 【美团充电宝-高级策略运营】北京/成都 20-30K

岗位信息 岗位&#xff1a;高级策略运营 薪资&#xff1a;20-30K 工作地点&#xff1a;北京/成都 岗位职责 1.制定业务导向策略&#xff1a;负责进行销售部门战略规划&#xff0c;根据部门业绩目标&#xff0c;发掘提升业绩贡献的契机&#xff0c;制定可落地的业绩提升策略&…

ADVANCE.AI寿栋:面对高度竞争的国际市场 中国出海企业的机会在哪?

6月16日消息&#xff0c;在细分增长2022新兴市场品牌出海线上峰会上&#xff0c;领创集团联合创始人&ADVANCE.AI CEO寿栋指出&#xff0c;过去两年&#xff0c;疫情加速全球电商发展、中国跨境电商出口额创新高的同时&#xff0c;全行业也在遭受更多的欺诈攻击。因此&#…

辰信领创联合发起创新战略联盟 网络安全与人工智能融合提速

12月18日&#xff0c;由知名上市科技企业北信源、三泰控股、和而泰、新兴网络安全公司辰信领创等50家“产、学、研、资、用”单位联合发起的“人工智能产业技术创新战略联盟(AI Union)”&#xff08;以下简称联盟&#xff09;在京正式成立。联盟成立后&#xff0c;将联合建设具…

AI创业,是商机还是泡沫

今天商汤上市&#xff0c;几经周折&#xff0c;总算上市成功。 嗯&#xff0c;据现场的小伙伴说&#xff0c;答谢晚宴其实给我留了位置&#xff0c;可惜因为疫情&#xff0c;无法去现场合影&#xff0c;否则又多了一些吹牛装逼的题材。 那么现在市场上也有很多不同观点&#xf…

辰信领创荣获“2016中国IT风云榜”两项大奖

近日&#xff0c;由中国信息产业商会、比特网、比特CIO俱乐部联合IT行业各界人士组织、参与&#xff0c;历时三月评选出的“2016中国IT风云榜”榜单正式出炉&#xff0c;国内新兴信息安全厂商辰信领创与旗下产品“景云网络防病毒系统”分获“2016中国IT风云榜信息安全领域创新企…

全球首创 | 领创激光研发“多头激光切割铝单板生产线”

激光加工一直有着精度高&#xff0c;速度快&#xff0c;效率高&#xff0c;可塑性高等优点&#xff0c;随着近几年激光在各个领域的应用&#xff0c;业界对激光加工的要求也越来越高&#xff0c;如加工的精度&#xff0c;速度、传送装置等等都提出了更高的要求。从传送装置来说…

修嗒嗒丨用AI+大数据重塑万亿级市场,领创智能生活新时代!

疫情加速了各行各业在线化进程&#xff0c;而在经历过互联网的变革后&#xff0c;泛家居领域通过AI技术向智能化方向发展&#xff0c;已成为一个无法阻挡的趋势。 2021&#xff0c;泛家居领域正迎来一场大变革&#xff01; 但由于泛家居领域的客观现状&#xff0c;不可能每家…

python一年一度的校园好歌声_【领创校园动态】2020年校园歌手总决赛圆满落幕!!...

原标题&#xff1a;【领创&校园动态】2020年校园歌手总决赛圆满落幕&#xff01;&#xff01; “歌手总决赛圆满落幕” 歌声嘹亮&#xff0c;音符飘扬&#xff0c;青春激荡&#xff0c;梦想启航。 2020年校园歌手大赛经过几周的初赛、复赛&#xff0c;于12月3日圆满落幕&am…

辰信领创携手天津麒麟全力保障国产操作系统安全

12月2日&#xff0c;由北信源和启明星辰投资的国内新兴信息安全厂商辰信领创与国产操作系统领军企业天津麒麟宣布达成产品战略合作——辰信领创旗下的“景云网络防病毒系统”将预装至天津麒麟旗下“银河麒麟通用桌面操作系统”&#xff0c;将为国产操作系统技术的自主可控发展打…

辰信领创:下一代信息安全是认知安全

9月22-23日&#xff0c;2016首届国际反病毒大会在天津隆重召开&#xff0c;此次大会由公安部、中央网信办、工信部等指导&#xff0c;天津市公安局、天津市外国专家局主办&#xff0c;国家计算机病毒应急处理中心、国家网络与信息安全信息通报中心承办&#xff0c;国内外著名的…

复旦计算机学院2020推免,复旦大学管理学院2020年度专业硕士项目推免招生及“领创营”系列活动通知...

原标题&#xff1a;复旦大学管理学院2020年度专业硕士项目推免招生及“领创营”系列活动通知 项目 2020级招生人数 国际商务硕士 (双学位) GMiM 24 国际商务硕士 (双学位) DDIM 35 金融硕士 (国际金融&#xff0c;金融工程、 全球化金融MFA双学位)MF 60 数据科学与商务分析硕士…

【金猿投融展】领创智信——智慧领创美好生活

投融资项目领创智信 本项目由领创智信投递并参与“数据猿年度金猿策划活动——2021大数据产业最具投资价值榜单及奖项”评选。 数据智能产业创新服务媒体 ——聚焦数智 改变商业 领创智信&#xff08;ADVANCE.AI&#xff09;是亚洲知名的人工智能和大数据公司&#xff0c;致力…

ABC 289 G - Shopping in AtCoder store 数学推导+凸包

大意&#xff1a; n个顾客&#xff0c;每个人有一个购买的欲望bi,m件物品&#xff0c;每一件物品有一个价值ci,每一个顾客会买商品当且仅当bici>定价. 现在要求对每一个商品定价&#xff0c;求出它的最大销售值&#xff08;数量*定价&#xff09; n,m<2e5 思路&#x…

《 Istio 权威指南 》重磅发行!华为云云原生团队匠心著作

由 Istio 社区指导委员会成员和华为云云原生团队联合编著的云原生服务网格书籍《 Istio 权威指南》重磅上市&#xff01;《 Istio 权威指南》包含云原生服务网格原理、实践、架构、源码四大技术篇章&#xff0c;内容权威、系统、详实&#xff0c; 凝聚华为云云原生团队在 Istio…