-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(data): add publish events over WebSocket #14242
base: main
Are you sure you want to change the base?
Conversation
@@ -70,7 +70,7 @@ async function connect( | |||
}; | |||
|
|||
// WS publish is not enabled in the service yet. It will be a follow up feature |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should we adjust this comment?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, this comment has been removed.
cleanup(); | ||
reject(new Error(`Publish errors: ${errorTypes.join(', ')}`)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this mean we'll close the WS connection if there's a publish error? If so, I don't think that's the behavior we want here. Publish errors would ideally be surfaced at the call site, similar to events.connect
, e.g.
try {
await channel.publish({ some: 'data' })
} catch (err) {
console.log('publish error', err)
}
This way, WS publish is self contained / decoupled from channel.subscribe
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We will not close the WS connection if there's a publish error. However, there was a bug in the implementation causing uncaught errors in Promise, it should surface the publish errors at the call site now.
Tested with:
const publishSingleEvent = async () => {
try {
await channel.publish(
{ key: "my event content" },
{ authMode: "userPool" }
);
console.log("Single event published via WS");
} catch (error) {
console.error(error);
}
};
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We discussed offline how I would expect event.connect
should allow both publish and subscribe until the channel has been closed, after which neither publish nor subscribe should work. With multi-channel, there are oddities around how this works in this implementation.
This change adds publish events to websockets. There should be tests added for this on the provider tests.
Description of changes
Add support to publish events over WebSocket connection for Amplify events client. Customers can now perform the following operations to publish their events.
Description of how you validated changes
Checklist
yarn test
passesBy submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.