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

Ady
已提問 4 年前檢視次數 1285 次
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 個月前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南