Skip to content
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

fix(client): Add Query Parameter Support to WebSocket Client in hono/client #3066

Merged

Conversation

naporin0624
Copy link
Contributor

This pull request adds support for query parameters to the WebSocket client in hono/client. The enhancement allows the WebSocket client to include query parameters in the URL, enabling more dynamic and flexible WebSocket connections.

Key Changes:

  • Query Parameter Handling: The WebSocket client can now accept and append query parameters to the WebSocket URL, allowing for more versatile and customized WebSocket connections.

Updated Code:

if (method === 'ws') {
  const webSocketUrl = replaceUrlProtocol(
    opts.args[0] && opts.args[0].param ? replaceUrlParam(url, opts.args[0].param) : url,
    'ws'
  );
  const targetUrl = new URL(webSocketUrl);
  for (const key in opts.args[0].query) {
    targetUrl.searchParams.set(key, opts.args[0].query[key]);
  }
  return new WebSocket(targetUrl.toString());
}

Motivation:

This change was motivated by the need to allow the WebSocket client to handle query parameters, providing greater flexibility for developers to customize WebSocket connections based on specific requirements.

Impact:

The added functionality has been tested to ensure that query parameters are correctly appended to the WebSocket URL, enhancing the WebSocket client's capabilities in hono/client.

These updates will improve the usability of the WebSocket client in hono/client, making it more adaptable to various networking needs by supporting query parameters in WebSocket URLs.

The author should do the following, if applicable

  • Add tests
  • Run tests
  • bun run format:fix && bun run lint:fix to format the code
  • Add TSDoc/JSDoc to document the code

Copy link

codecov bot commented Jul 1, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 95.87%. Comparing base (3327baf) to head (3734af8).
Report is 20 commits behind head on main.

Current head 3734af8 differs from pull request most recent head 9225a14

Please upload reports for the commit 9225a14 to get more accurate results.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3066      +/-   ##
==========================================
+ Coverage   94.75%   95.87%   +1.12%     
==========================================
  Files         136      137       +1     
  Lines       13339    13464     +125     
  Branches     2241     2271      +30     
==========================================
+ Hits        12639    12909     +270     
+ Misses        700      555     -145     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@yusukebe yusukebe changed the title Add Query Parameter Support to WebSocket Client in hono/client fix(client): Add Query Parameter Support to WebSocket Client in hono/client Jul 1, 2024
'/',
upgradeWebSocket((c) => ({
onMessage(event, ws) {
console.log(`Message from client: ${event.data}`)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you remove this console.log?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your comment. It has been fixed!!

@yusukebe
Copy link
Member

yusukebe commented Jul 1, 2024

Hi @naporin0624

Thank you for the PR. I've left a comment. If it is okay, I'll merge this into the main and will release it as a patch release.

Copy link
Member

@yusukebe yusukebe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@yusukebe
Copy link
Member

yusukebe commented Jul 1, 2024

@naporin0624

Cool! Merging now. Thanks.

@yusukebe yusukebe merged commit ddc1de8 into honojs:main Jul 1, 2024
12 checks passed
@naporin0624 naporin0624 deleted the chore/fix-websocket-query-parameter branch July 1, 2024 08:06
adamnolte pushed a commit to autoblocksai/cli that referenced this pull request Jul 24, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [hono](https://hono.dev/) ([source](https://github.com/honojs/hono))
| [`4.4.7` ->
`4.5.1`](https://renovatebot.com/diffs/npm/hono/4.4.7/4.5.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/hono/4.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/hono/4.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/hono/4.4.7/4.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/hono/4.4.7/4.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>honojs/hono (hono)</summary>

### [`v4.5.1`](https://github.com/honojs/hono/releases/tag/v4.5.1)

[Compare
Source](https://github.com/honojs/hono/compare/v4.5.0...v4.5.1)

#### What's Changed

- chore: remove rimraf and use bun shell by
[@&#8203;nakasyou](https://github.com/nakasyou) in
[honojs/hono#3146
- chore: moving the setup file of vitest by
[@&#8203;EdamAme-x](https://github.com/EdamAme-x) in
[honojs/hono#3157
- fix(middleware/jwt): Changed the jwt-secret type to SignatureKey by
[@&#8203;JulesVerner](https://github.com/JulesVerner) in
[honojs/hono#3167
- feat(bearer-auth): Allow empty bearer-auth middleware prefixes by
[@&#8203;prevostc](https://github.com/prevostc) in
[honojs/hono#3161
- chore(factory): remove `@experimental` from `createApp` by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[honojs/hono#3164
- fix(client): support array values for `query` in `ws` by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[honojs/hono#3169
- fix(validator): ignore content-type mismatches by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[honojs/hono#3165

#### New Contributors

- [@&#8203;JulesVerner](https://github.com/JulesVerner) made their
first contribution in
[honojs/hono#3167
- [@&#8203;prevostc](https://github.com/prevostc) made their first
contribution in
[honojs/hono#3161

**Full Changelog**:
honojs/hono@v4.5.0...v4.5.1

###
[`v4.5.0`](https://github.com/honojs/hono/compare/v4.4.13...v4.5.0)

[Compare
Source](https://github.com/honojs/hono/compare/v4.4.13...v4.5.0)

### [`v4.4.13`](https://github.com/honojs/hono/releases/tag/v4.4.13)

[Compare
Source](https://github.com/honojs/hono/compare/v4.4.12...v4.4.13)

##### What's Changed

- chore: update benchmark by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[honojs/hono#3102
- chore: replace tsx with Bun by
[@&#8203;nakasyou](https://github.com/nakasyou) in
[honojs/hono#3103
- refactor(http-status): remove unnecessary line of types and use common
types by [@&#8203;EdamAme-x](https://github.com/EdamAme-x) in
[honojs/hono#3110
- fix(jsx): redefine scope attribute as enum type by
[@&#8203;yasuaki640](https://github.com/yasuaki640) in
[honojs/hono#3118
- fix(types): allow `string[] | File[]` for RPC form value by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[honojs/hono#3117
- fix(validator-types): type Alignment with Web Standards by
[@&#8203;EdamAme-x](https://github.com/EdamAme-x) in
[honojs/hono#3120
- fix(types): `app.use(path, mw)` return correct schema type by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[honojs/hono#3128

**Full Changelog**:
honojs/hono@v4.4.12...v4.4.13

### [`v4.4.12`](https://github.com/honojs/hono/releases/tag/v4.4.12)

[Compare
Source](https://github.com/honojs/hono/compare/v4.4.11...v4.4.12)

#### What's Changed

- fix(aws-lambda): set cookies with comma is bugged by
[@&#8203;NamesMT](https://github.com/NamesMT) in
[honojs/hono#3084
- fix(types): infer `path` when chaining after `use` by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[honojs/hono#3087
- chore: update outdated links in JSDoc by
[@&#8203;ryuapp](https://github.com/ryuapp) in
[honojs/hono#3089
- fix(jsx): changes behavior when `download` attribute is set to a
boolean value. by [@&#8203;oon00b](https://github.com/oon00b) in
[honojs/hono#3094
- chore: add the triage label by
[@&#8203;mvares](https://github.com/mvares) in
[honojs/hono#3092
- feat(types): improve JSONParsed by
[@&#8203;m-shaka](https://github.com/m-shaka) in
[honojs/hono#3074
- fix(helper/streaming): remove slow types by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[honojs/hono#3100
- chore(utils/jwt): add `@module` docs by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[honojs/hono#3101

#### New Contributors

- [@&#8203;oon00b](https://github.com/oon00b) made their first
contribution in
[honojs/hono#3094

**Full Changelog**:
honojs/hono@v4.4.11...v4.4.12

### [`v4.4.11`](https://github.com/honojs/hono/releases/tag/v4.4.11)

[Compare
Source](https://github.com/honojs/hono/compare/v4.4.10...v4.4.11)

#### What's Changed

- refactor: remove unnecessary async keyword from router tests by
[@&#8203;K-tecchan](https://github.com/K-tecchan) in
[honojs/hono#3061
- fix(validator): don't return a FormData if formData is cached by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[honojs/hono#3067
- fix(client): Add Query Parameter Support to WebSocket Client in
`hono/client` by [@&#8203;naporin0624](https://github.com/naporin0624)
in
[honojs/hono#3066
- refactor(types): move `HandlerInterface`'s `(path, handler)`s
overloads down by [@&#8203;NamesMT](https://github.com/NamesMT) in
[honojs/hono#3072
- test(helper/dev): fix typo of test case name by
[@&#8203;yasuaki640](https://github.com/yasuaki640) in
[honojs/hono#3073
- fix(stream): Fixed a problem that onAbort() is called even if request
is normally closed in deno by
[@&#8203;usualoma](https://github.com/usualoma) in
[honojs/hono#3079

#### New Contributors

- [@&#8203;K-tecchan](https://github.com/K-tecchan) made their first
contribution in
[honojs/hono#3061

**Full Changelog**:
honojs/hono@v4.4.10...v4.4.11

### [`v4.4.10`](https://github.com/honojs/hono/releases/tag/v4.4.10)

[Compare
Source](https://github.com/honojs/hono/compare/v4.4.9...v4.4.10)

#### What's Changed

- chore(jsr): export JWT utils by
[@&#8203;ryuapp](https://github.com/ryuapp) in
[honojs/hono#3056
- fix(streaming): call stream.abort() explicitly when request is aborted
by [@&#8203;usualoma](https://github.com/usualoma) in
[honojs/hono#3042
- fix(client): set Path as the default of Original by
[@&#8203;m-shaka](https://github.com/m-shaka) in
[honojs/hono#3058

#### New Contributors

- [@&#8203;m-shaka](https://github.com/m-shaka) made their first
contribution in
[honojs/hono#3058

**Full Changelog**:
honojs/hono@v4.4.9...v4.4.10

### [`v4.4.9`](https://github.com/honojs/hono/releases/tag/v4.4.9)

[Compare
Source](https://github.com/honojs/hono/compare/v4.4.8...v4.4.9)

#### What's Changed

- perf(context): improve initializing `Context` by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[honojs/hono#3046
- fix(types): correct inferring env when routes channing by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[honojs/hono#3051
- docs: update the description of `package.json` and README by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[honojs/hono#3052
- fix(timing): prevent duplicate applications by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[honojs/hono#3054

**Full Changelog**:
honojs/hono@v4.4.8...v4.4.9

### [`v4.4.8`](https://github.com/honojs/hono/releases/tag/v4.4.8)

[Compare
Source](https://github.com/honojs/hono/compare/v4.4.7...v4.4.8)

#### What's Changed

- fix(jsx): add an explicit type by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[honojs/hono#3007
- ci: use `env` for codecov GitHub Actions by
[@&#8203;yusukebe](https://github.com/yusukebe) in
[honojs/hono#3010
- chore: Fix typos in JSDoc by
[@&#8203;NicoPlyley](https://github.com/NicoPlyley) in
[honojs/hono#3002
- fix: change to allow use of websocket options by
[@&#8203;EdamAme-x](https://github.com/EdamAme-x) in
[honojs/hono#2999
- perf: parseAccept without spread operator by
[@&#8203;Jayllyz](https://github.com/Jayllyz) in
[honojs/hono#3003
- test: add tests for buffer.ts by
[@&#8203;yasuaki640](https://github.com/yasuaki640) in
[honojs/hono#3004
- chore: upload bun test coverage to CodeCov by
[@&#8203;exoego](https://github.com/exoego) in
[honojs/hono#3022
- refactor: remove unneeded import statements by
[@&#8203;EdamAme-x](https://github.com/EdamAme-x) in
[honojs/hono#3014
- perf(utils/buffer): use promise all for better performance by
[@&#8203;yasuaki640](https://github.com/yasuaki640) in
[honojs/hono#3031

**Full Changelog**:
honojs/hono@v4.4.7...v4.4.8

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" in timezone
America/Chicago, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View the
[repository job log](https://developer.mend.io/github/autoblocksai/cli).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MjUuMSIsInVwZGF0ZWRJblZlciI6IjM3LjQzOC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants