WebSocket API - Posting to connection - Route not found error

0

Hi,

I'm using AWS Lambda to build a basic chat app, however when trying to post a message back to a connection I get an error

"No method found matching route test0/@connections/PxWP8cfSDoECFYw= for http method POST."

This is the code....

let api = new AWS.ApiGatewayManagementApi({
apiVersion : '2018-11-29',
endpoint : event.requestContext.domainName _ '/' _ event.requestContext.stage
});

await api.postToConnection({ ConnectionId: event.requestContext.connectionId, Data: 'callback'}).promise();

Many Thanks,
Ady

3回答
1
endpoint : event.requestContext.domainName + '/' + event.requestContext.stage

"No method found matching route test0/@connections/PxWP8cfSDoECFYw= for http method POST."

Based on the error message and your code, I guess you're using a custom domain name with a base mapping to the API's "test0" stage. In the case,

https://YOUR_DOMAIN/test0/@connections/PxWP8cfSDoECFYw=

has a same effect to invoke:

https://[apiId].execute-api.<region>.amazonaws.com/test0/test0/@connections/PxWP8cfSDoECFYw=
(Note there is "test0" twice in the URI)

This is the reason why the route was resolved to "test0/@connections/PxWP8cfSDoECFYw=" instead of "@connections/PxWP8cfSDoECFYw=".

In the case, you should omit the stage name in the endpoint URI.

AWS
回答済み 4年前
0

@jwaataws, thanks for the swift response.

And yes, looks like you described this scenario exactly, and your suggestion of removing the stage name from the endpoint see this working well.

Many Thanks,
Ady

Ady
回答済み 4年前
0

Remove the stage from the url if you are using a custom domain.

Custom domain as in, I was using https://mywebsite.com, and when we append the stage, it was like https://mywebsite.com/dev. Then I got the above error. removing the stage fixed the issue

imtmh
回答済み 8ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン

関連するコンテンツ