[FEATURE] (type-safe-api) WebSocket API support for Java
- Dominant language
- TypeScript
- Stars
- 451
- Forks
- 84
- Avg merge
- 20h 3m
- Merged PRs (30d)
- 1
Description
### Describe the feature
Add support for WebSocket APIs in Java
### Use Case
Consistency with remainder of PDK
### Proposed Solution
Need to add the following:
- [ ] Runtime: operation handler wrappers
- [ ] Runtime: @connect/@disconnect handler wrappers
- [ ] Runtime: interceptors
- [ ] Runtime: server sdk (wrapping API Gateway Management API SDK)
- [ ] Infrastructure
- [ ] Handler stubs
- [ ] @connect/@disconnect handler stubs
- [ ] WebSocket client library
- [ ] Integration with `InfrastructureJavaProject`
### Other Information
The majority of scaffolding is there already for runtime/handlers/infra - the mustache templates for the `java-async-xxx` projects in [`packages/type-safe-api/scripts/generators`](https://github.com/aws/aws-pdk/tree/mainline/packages/type-safe-api/scripts/type-safe-api/generators) are copy/pasted REST API implementations that need to be modified to work for websockets.
The projen projects (eg [generated-java-async-runtime-project.ts](https://github.com/aws/aws-pdk/blob/mainline/packages/type-safe-api/src/project/codegen/runtime/generated-java-async-runtime-project.ts)) will likely need to be tweaked slightly to add any dependencies required.
The client library will need to be added - follow the same pattern as the TypeScript websocket client library.
Make sure to remove the validation check once implemented: https://github.com/aws/aws-pdk/blob/a0dda50691a756798521dd1c8cbf0d5c21bdc9d2/packages/type-safe-api/src/project/type-safe-websocket-api-project.ts#L225
### Acknowledgements
- [X] I may be able to implement this feature request
- [ ] This feature might incur a breaking change
### PDK version used
0.23.26
### What languages will this feature affect?
Java
### Environment details (OS name and version, etc.)
OSX
Contributor guide
Research direction
Start with the Java async templates under packages/type-safe-api/scripts/type-safe-api/generators and generated-java-async-runtime-project.ts, comparing them with the TypeScript WebSocket client pattern. Trace the validation check in packages/type-safe-api/src/project/type-safe-websocket-api-project.ts, then implement the listed runtime, infrastructure, handler, client, and project-integration pieces; done means Java WebSocket APIs are supported and that validation check is removed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, java, typescript
- Domain
- api, backend, cloud, infrastructure
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100