如何用亚马逊API网关制作WebSocket API

263 阅读4分钟

目录

阅读时间: 4 分钟

我们将在本博中学习如何用API网关制作Websocket API。让我们先快速了解一下API。

什么是API?

API是应用编程接口的意思,它是一种软件中介,允许两个应用程序相互通信。

什么是WebSocket API?

在API Gateway中,WebSocket API是一组WebSocket路由,它与后端HTTP端点、Lambda函数或其他AWS服务相连。

WebSocket的API是双向的。客户端可以向服务发送消息,服务也可以自己向客户端发送消息。因为服务可以向客户推送数据,而不需要客户提出明确的请求,这种双向行为可以实现更丰富的客户/服务互动。实时应用程序,如聊天应用程序、协作平台、多人游戏和金融交易平台,经常使用WebSocket API。

现在我们来构建一个Websocket API网关。

先决条件。

  • AWS账户

第1步:创建一个Lambda函数

AWS Lambda是一种无服务器、事件驱动的计算服务,可以让你为几乎任何类型的应用程序或后端服务运行代码,而无需配置或管理服务器。

进入AWS服务,点击lambda服务,创建一个函数,将其连接到API网关。Lambda函数的用户界面如下所示。点击创建函数按钮,开始创建Lambda函数。

点击 创建函数,从无服务器应用库中创建一个函数。键入WebSockets,然后打勾。

这显示了如何使用应用程序创建自定义IAM角色和资源策略。

在这个例子中,我们将选择simple-WebSockets-chat-app,它是由API Gateway团队创建的。

第2步:部署应用程序

我们将部署这个应用程序,它将产生onConnect、OnDisconnect和sendMessage等功能。

因此,应用程序的名称是simple-WebSockets-chat-app,表的名称是simplechat_connections,DynamoDB用于存储每个客户端的连接标识符。

勾选复选框并 部署该功能。

我们可以看到DynamoDB表包含连接、API网关部署、3个Lambda函数、OnConnect函数、OnDisconnect函数和sendMessage函数。

第3步:WebSocket API网关

回到AWS管理控制台,从网络和内容交付服务列表中选择API网关。

我们会看到一个SimpleChatWebSocket应用程序,协议为WebSocket

打开这个应用程序。路由选择表达式是$request.body.action,它将包含动作键,这将路由到特定的路由。

第4步:测试WebSocket API

打开Cloud Shell并安装wscat,这将有助于我们测试API。

sudo npm install -g wscat

通过进入Stages然后进入Prod获取WebSocket URL

接下来运行wscat -c ,进行连接

wscat -c wss://5osuw1gszf.execute-api.us-east-1.amazonaws.com/Prod

当我们连接时,它会运行到OnConnect函数。

然后到DynamoDB

我们可以发送一些消息,所以我们需要打开JSON消息调用到行动。

第一个键将是 "action",接下来将是 "sendmessage",它将从API网关路由表达,然后是"data","本身将是"hello world!"。

{ "action" : "sendmessage", "data" : "hello world!"}

因此,当我们发送这个消息时,我们把它发送到lambda函数,这将从服务器返回到hello world。

现在打开一个新标签,把它分成几列,再次运行wscat ,我们将有一个新的客户端连接。再次发送消息。

{ "action" : "sendmessage", "data" : "hello world Again!"}

如果我们去DynamoDB控制台,可以看到两个连接ID。

我们也可以通过将列拆分成三列来再次测试。我们将看到消息被所有的客户发送和接收,即他们可以聊天

结论

我们已经学会了如何使用API网关制作一个Websocket API。

请阅读关于使用API网关创建REST API和更多关于**DevOps的信息。**

参考资料

AWS Lambda

WebSocket API