-
-
Notifications
You must be signed in to change notification settings - Fork 753
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
chore(blog): added new websocket article #3394
base: master
Are you sure you want to change the base?
Conversation
Warning Rate limit exceeded@AceTheCreator has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 34 minutes and 57 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (1)
WalkthroughA new file, Changes
Poem
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
✅ Deploy Preview for asyncapi-website ready!Built without sensitive environment variables
To edit notification comments on pull requests, go to your Netlify site configuration. |
- **SecuritySchemes:** An object that holds reusable security scheme objects | ||
- **Schemas:** and object to hold reusable schema object. | ||
|
||
Now, because we want our `#chat` channel to not look overwhelming and difficult to read, we are going to create our message in the component object. |
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.
#chat is not a value from asyncapi document but rather a name for a chat channel that you use in article to probably reference too slack channels, or in general channel chat concept, so instead of code
from markdown probably leave it without anything or in bold. You use it several times in article, pick one way and be consistent
chatMessage: | ||
$ref: '#/components/messages/chat' | ||
|
||
userStatus: #newly added channel message |
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.
instead of adding comment you can use CodeBlock
component like https://github.com/asyncapi/website/blob/master/markdown/docs/tutorials/getting-started/servers.md?plain=1#L14
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.
I don't think the CodeBlock
highlight is working as expected. I thought it was suppose to highlight the lines specified in the props 🤔
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.
looks like there is a bug, it was suppose to highlight, just ain't working anymore, so yeah, I guess you need to fall back to comments in yaml, sorry
I'll report a bug
⚡️ Lighthouse report for the changes in this PR:
Lighthouse ran on https://deploy-preview-3394--asyncapi-website.netlify.app/ |
Added suggested changes, wyt @derberg? |
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.
Actionable comments posted: 1
🧹 Outside diff range and nitpick comments (3)
markdown/blog/asyncapi-and-websocket.md (3)
133-152
: Add language specifiers to code blocksAdd language specifiers to the fenced code blocks to enable proper syntax highlighting. For example:
-``` +```yamlAlso applies to: 175-175, 210-210, 226-226, 242-242, 261-261, 281-281, 311-311, 325-325, 360-360, 399-399, 421-421
🧰 Tools
🪛 LanguageTool
[misspelling] ~150-~150: This word is normally spelled as one.
Context: ...ioned earlier, AsyncAPI channels enable bi-directional communication between senders and recei...(EN_COMPOUNDS_BI_DIRECTIONAL)
🪛 Markdownlint (0.37.0)
133-133: null
Fenced code blocks should have a language specified(MD040, fenced-code-language)
152-152: null
Fenced code blocks should have a language specified(MD040, fenced-code-language)
38-38
: Standardize hyphenationUse "bidirectional" consistently throughout the document instead of "bi-directional".
Also applies to: 70-70, 150-150
🧰 Tools
🪛 LanguageTool
[misspelling] ~38-~38: This word is normally spelled as one.
Context: ...e message formats and enabling instant, bi-directional data exchange between client and server...(EN_COMPOUNDS_BI_DIRECTIONAL)
56-56
: Fix subject-verb agreement issuesSeveral sentences have subject-verb agreement issues. For example:
- "some of which is maintained" → "some of which are maintained"
- "what channels looks like" → "what channels look like"
- "AsyncAPI channels allows" → "AsyncAPI channels allow"
- "elements that works" → "elements that work"
Also applies to: 66-66, 70-70, 72-72, 97-97, 163-163
🧰 Tools
🪛 LanguageTool
[uncategorized] ~56-~56: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...obust ecosystem of tools, some of which is maintained by the AsyncAPI initiative. ...(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
markdown/blog/asyncapi-and-websocket.md
(1 hunks)
🧰 Additional context used
🪛 LanguageTool
markdown/blog/asyncapi-and-websocket.md
[misspelling] ~38-~38: This word is normally spelled as one.
Context: ...e message formats and enabling instant, bi-directional data exchange between client and server...
(EN_COMPOUNDS_BI_DIRECTIONAL)
[uncategorized] ~56-~56: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...obust ecosystem of tools, some of which is maintained by the AsyncAPI initiative. ...
(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~66-~66: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...ively. Now let's look at what channels looks like in an AsyncAPI document. ### Cha...
(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~70-~70: This verb does not appear to agree with the subject. Consider using a different form.
Context: .... ### Channels The AsyncAPI channels allows us to establish a bi-directional commun...
(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[misspelling] ~70-~70: This word is normally spelled as one.
Context: ...ncAPI channels allows us to establish a bi-directional communication between message senders a...
(EN_COMPOUNDS_BI_DIRECTIONAL)
[style] ~72-~72: The phrase ‘pretty much’ can be informal. To strengthen your writing, consider removing it or replacing it with an adverb.
Context: ...a, that's it. Channels in AsyncAPI are pretty much based on a simple idea, Senders send me...
(PRETTY_MUCH)
[uncategorized] ~72-~72: This verb does not appear to agree with the subject. Consider using a different form.
Context: ... of a number of different elements that works together to make communication between ...
(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~72-~72: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...eivers smooth. Some of these components includes, - Address: An optional string tha...
(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~79-~79: A comma might be missing here.
Context: ...in AsyncAPI, not let's see the next key concept which is messages. ### Messages I me...
(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
[uncategorized] ~97-~97: This verb does not appear to agree with the subject. Consider using a different form.
Context: ... And here's an example of what messages looks like in an AsyncAPI document Now let's...
(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~99-~99: A comma might be missing here.
Context: ...t Now let's take a look at another key concept which is called operations ### Operati...
(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
[uncategorized] ~99-~99: A period might be missing here.
Context: ... at another key concept which is called operations ### Operations Operations are one of ...
(AI_EN_LECTOR_MISSING_PUNCTUATION_PERIOD)
[uncategorized] ~105-~105: You might be missing the article “the” here.
Context: ...ving_ a message in that channel, making message flow clear and structured. Operations ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[misspelling] ~150-~150: This word is normally spelled as one.
Context: ...ioned earlier, AsyncAPI channels enable bi-directional communication between senders and recei...
(EN_COMPOUNDS_BI_DIRECTIONAL)
[uncategorized] ~163-~163: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...component Components in AsyncAPI helps holds a set of reusable objects for different...
(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~163-~163: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...a set of reusable objects for different aspect of the AsyncAPI specification. When you...
(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)
[grammar] ~163-~163: Did you mean “is being” or “has been”?
Context: ...ny effect on your API unless the object is been explicitly referenced from another prop...
(BEEN_PART_AGREEMENT)
[misspelling] ~224-~224: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...given channel. So now we need to create a operation for our #chat channel and we ...
(EN_A_VS_AN)
[uncategorized] ~224-~224: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...create a operation for our #chat channel and we do that by doing the following: ```...
(COMMA_COMPOUND_SENTENCE)
[uncategorized] ~254-~254: Did you mean “I”?
Context: ... will fail because in my #chat channel, i have no such message as hello
even if...
(I_LOWERCASE_PREMIUM)
[uncategorized] ~254-~254: Did you mean “I”?
Context: ...have no such message as hello
even if i have the hello
message defined in my ...
(I_LOWERCASE_PREMIUM)
[uncategorized] ~259-~259: You might be missing the article “the” here.
Context: ...message. And we do that by doing almost same thing as sending a message except, inst...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[typographical] ~389-~389: Consider adding a comma here.
Context: ...Header' ` } As you can see we added a security property to the dev...
(AS_YOU_CAN_SEE_COMMA)
[uncategorized] ~389-~389: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array -$ref
and...
(I_LOWERCASE_PREMIUM)
[style] ~389-~389: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array -$ref
and the reason is because you can pass multiple security types in...
(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)
[style] ~395-~395: Use ‘will’ instead of ‘going to’ if the following action is certain.
Context: ...ser is trying to join, a new connection is going to be established, which doesn't align wel...
(GOING_TO_WILL)
[uncategorized] ~414-~414: The preposition “on” seems more likely in this position than the preposition “in”.
Context: ...making it ideal for exchanging messages in multiple channels simultaneously. ###...
(AI_EN_LECTOR_REPLACEMENT_PREPOSITION_IN_ON)
[grammar] ~555-~555: Possible agreement error. The noun thing seems to be countable; consider using: “a lot of interesting things”.
Context: ...owed the spec-first approach, we can do a lot of interesting thing with this document, such as: - **Gener...
(A_LOT_OF_NN)
[style] ~558-~558: Consider using a different verb to strengthen your wording.
Context: ...client or server code and models, while speeding up the development process and reducing th...
(SPEED_UP_ACCELERATE)
[style] ~578-~578: The phrase ‘feel free to’ is used quite frequently. Consider using a less frequent alternative to set your writing apart from others and make it sound more professional.
Context: ...n modern API design. ### References - Feel free to check out my [livestream](https://www.y...
(FEEL_FREE_TO_STYLE_ME)
🪛 Markdownlint (0.37.0)
markdown/blog/asyncapi-and-websocket.md
133-133: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
152-152: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
175-175: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
210-210: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
226-226: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
242-242: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
261-261: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
281-281: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
311-311: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
325-325: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
360-360: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
399-399: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
421-421: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🔇 Additional comments (3)
markdown/blog/asyncapi-and-websocket.md (3)
1-14
: Verify the publication date
The blog post's date is set to December 2024, which is in the future. Consider updating it to a current or past date.
224-224
: Use consistent channel notation
As mentioned in previous reviews, avoid using #chat
notation when referring to the chat channel. Instead, use either the channel name without the hash symbol or put it in bold.
Also applies to: 238-238, 254-254
🧰 Tools
🪛 LanguageTool
[misspelling] ~224-~224: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...given channel. So now we need to create a operation for our #chat channel and we ...
(EN_A_VS_AN)
[uncategorized] ~224-~224: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...create a operation for our #chat channel and we do that by doing the following: ```...
(COMMA_COMPOUND_SENTENCE)
557-560
: Well-structured documentation with practical examples
The article effectively combines theory with practical examples, includes helpful diagrams, and provides valuable references to tools and resources. The section about generating documentation, code, and performing contract testing adds significant value.
🧰 Tools
🪛 LanguageTool
[style] ~558-~558: Consider using a different verb to strengthen your wording.
Context: ...client or server code and models, while speeding up the development process and reducing th...
(SPEED_UP_ACCELERATE)
sendMessage: | ||
summary: Receive a chat message | ||
description: Allows users to receive messages to the chat room | ||
action: receieve |
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.
Fix typo in operation action
There's a typo in the operation action:
- action: receieve
+ action: receive
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
action: receieve | |
action: receive |
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.
@AceTheCreator have a look
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.
Seems like the humans are having a chat. I'll hop back into my burrow for now. If you need me again, just tag @coderabbitai in a new comment, and I'll come hopping out!
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #3394 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 19 19
Lines 668 668
=========================================
Hits 668 668 ☔ View full report in Codecov by Sentry. |
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.
Actionable comments posted: 2
🧹 Nitpick comments (1)
markdown/blog/asyncapi-and-websocket.md (1)
38-38
: Enhance writing style and consistency.Consider the following improvements:
- Replace "bi-directional" with "bidirectional" for consistency with technical writing standards
- Replace informal phrase "pretty much" with more precise language
- Fix article usage: "a operation" should be "an operation"
-bi-directional +bidirectional -pretty much based on +primarily based on -create a operation +create an operationAlso applies to: 70-70, 72-72, 150-150, 224-224
🧰 Tools
🪛 LanguageTool
[misspelling] ~38-~38: This word is normally spelled as one.
Context: ...e message formats and enabling instant, bi-directional data exchange between client and server...(EN_COMPOUNDS_BI_DIRECTIONAL)
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
markdown/blog/asyncapi-and-websocket.md
(1 hunks)
🧰 Additional context used
🪛 LanguageTool
markdown/blog/asyncapi-and-websocket.md
[misspelling] ~38-~38: This word is normally spelled as one.
Context: ...e message formats and enabling instant, bi-directional data exchange between client and server...
(EN_COMPOUNDS_BI_DIRECTIONAL)
[misspelling] ~70-~70: This word is normally spelled as one.
Context: ...ncAPI channels allows us to establish a bi-directional communication between message senders a...
(EN_COMPOUNDS_BI_DIRECTIONAL)
[style] ~72-~72: The phrase ‘pretty much’ can be informal. To strengthen your writing, consider removing it or replacing it with an adverb.
Context: ...a, that's it. Channels in AsyncAPI are pretty much based on a simple idea, Senders send me...
(PRETTY_MUCH)
[misspelling] ~150-~150: This word is normally spelled as one.
Context: ...ioned earlier, AsyncAPI channels enable bi-directional communication between senders and recei...
(EN_COMPOUNDS_BI_DIRECTIONAL)
[grammar] ~163-~163: Did you mean “is being” or “has been”?
Context: ...ny effect on your API unless the object is been explicitly referenced from another prop...
(BEEN_PART_AGREEMENT)
[misspelling] ~224-~224: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...given channel. So now we need to create a operation for our #chat channel and we ...
(EN_A_VS_AN)
[uncategorized] ~224-~224: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...create a operation for our #chat channel and we do that by doing the following: ```...
(COMMA_COMPOUND_SENTENCE)
[uncategorized] ~254-~254: Did you mean “I”?
Context: ... will fail because in my #chat channel, i have no such message as hello
even if...
(I_LOWERCASE_PREMIUM)
[uncategorized] ~254-~254: Did you mean “I”?
Context: ...have no such message as hello
even if i have the hello
message defined in my ...
(I_LOWERCASE_PREMIUM)
[typographical] ~387-~387: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...
(AS_YOU_CAN_SEE_COMMA)
[uncategorized] ~387-~387: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array -$ref
and...
(I_LOWERCASE_PREMIUM)
[style] ~387-~387: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array -$ref
and the reason is because you can pass multiple security types in...
(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)
[style] ~393-~393: Use ‘will’ instead of ‘going to’ if the following action is certain.
Context: ...ser is trying to join, a new connection is going to be established, which doesn't align wel...
(GOING_TO_WILL)
[grammar] ~553-~553: Possible agreement error. The noun thing seems to be countable; consider using: “a lot of interesting things”.
Context: ...owed the spec-first approach, we can do a lot of interesting thing with this document, such as: - **Gener...
(A_LOT_OF_NN)
[style] ~556-~556: Consider using a different verb to strengthen your wording.
Context: ...client or server code and models, while speeding up the development process and reducing th...
(SPEED_UP_ACCELERATE)
[style] ~576-~576: The phrase ‘feel free to’ is used quite frequently. Consider using a less frequent alternative to set your writing apart from others and make it sound more professional.
Context: ...n modern API design. ### References - Feel free to check out my [livestream](https://www.y...
(FEEL_FREE_TO_STYLE_ME)
🔇 Additional comments (2)
markdown/blog/asyncapi-and-websocket.md (2)
1-14
: LGTM! Front matter is well-structured.
The metadata is complete and follows the correct YAML format.
574-578
: LGTM! References are well-organized and valuable.
The references section provides a good mix of resources including hands-on tutorials, detailed documentation, and community engagement opportunities.
🧰 Tools
🪛 LanguageTool
[style] ~576-~576: The phrase ‘feel free to’ is used quite frequently. Consider using a less frequent alternative to set your writing apart from others and make it sound more professional.
Context: ...n modern API design. ### References - Feel free to check out my [livestream](https://www.y...
(FEEL_FREE_TO_STYLE_ME)
- $ref: '#/components/securitySchemes/apiKeyHeader' | ||
``` | ||
|
||
As you can see we added a security property to the development server, and one thing you can notice is i'm specifying it as an array `-$ref` and the reason is because you can pass multiple security types in the security object, and only one of this security scheme needs to be satisfied to authorize a connection. But in our case, we only needed one so yea, let's role with that. |
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.
Correct the security schemes explanation.
The explanation about security schemes is incorrect. When multiple security schemes are specified in an array, ALL schemes must be satisfied, not just one of them. If you want to specify alternative security schemes (OR relationship), you need to use multiple array items.
-and the reason is because you can pass multiple security types in the security object, and only one of this security scheme needs to be satisfied to authorize a connection
+Multiple security schemes in a single array item form an AND relationship, meaning all schemes must be satisfied. To specify alternative schemes (OR relationship), you would need multiple array items.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
As you can see we added a security property to the development server, and one thing you can notice is i'm specifying it as an array `-$ref` and the reason is because you can pass multiple security types in the security object, and only one of this security scheme needs to be satisfied to authorize a connection. But in our case, we only needed one so yea, let's role with that. | |
As you can see we added a security property to the development server, and one thing you can notice is i'm specifying it as an array `-$ref` and Multiple security schemes in a single array item form an AND relationship, meaning all schemes must be satisfied. To specify alternative schemes (OR relationship), you would need multiple array items. But in our case, we only needed one so yea, let's role with that. |
🧰 Tools
🪛 LanguageTool
[typographical] ~387-~387: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...
(AS_YOU_CAN_SEE_COMMA)
[uncategorized] ~387-~387: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array -$ref
and...
(I_LOWERCASE_PREMIUM)
[style] ~387-~387: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array -$ref
and the reason is because you can pass multiple security types in...
(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)
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.
Actionable comments posted: 1
🧹 Nitpick comments (4)
markdown/blog/asyncapi-and-websocket.md (4)
31-31
: Fix grammatical error in parenthetical explanation.There's a missing space after the opening parenthesis in the explanation of polling.
-repeatedly pinging the server at intervals(a process known as polling) +repeatedly pinging the server at intervals (a process known as polling)
70-72
: Improve clarity in channels explanation.The explanation of channels is too brief and contains grammatical errors. Consider expanding the explanation and fixing the grammar.
-The AsyncAPI channels allows us to establish a bidirectional communication between message senders and receivers. yea, that's it. - -Channels in AsyncAPI are primarily based on a simple idea, Senders send messages with different contents to be addressed to different channels, and receivers subscribe to these channels to receive these messages. +AsyncAPI channels enable bidirectional communication between message senders and receivers. They serve as the primary pathways for message exchange in your API. + +Channels in AsyncAPI are based on a simple concept: senders publish messages with different content to specific channels, and receivers subscribe to these channels to receive the messages.
127-140
: Add language specifier to code block.Add 'yaml' as the language specifier to enable syntax highlighting.
-``` +```yaml🧰 Tools
🪛 Markdownlint (0.37.0)
127-127: null
Fenced code blocks should have a language specified(MD040, fenced-code-language)
570-570
: Improve writing style in references section.The phrase "feel free to" is informal. Consider a more professional alternative.
-Feel free to check out my [livestream] +Watch my [livestream]🧰 Tools
🪛 LanguageTool
[style] ~570-~570: The phrase ‘feel free to’ is used quite frequently. Consider using a less frequent alternative to set your writing apart from others and make it sound more professional.
Context: ...n modern API design. ### References - Feel free to check out my [livestream](https://www.y...(FEEL_FREE_TO_STYLE_ME)
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
markdown/blog/asyncapi-and-websocket.md
(1 hunks)
🧰 Additional context used
🪛 LanguageTool
markdown/blog/asyncapi-and-websocket.md
[grammar] ~157-~157: Did you mean “is being” or “has been”?
Context: ...ny effect on your API unless the object is been explicitly referenced from another prop...
(BEEN_PART_AGREEMENT)
[misspelling] ~218-~218: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...given channel. So now we need to create a operation for our chat channel and ...
(EN_A_VS_AN)
[uncategorized] ~218-~218: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ate a operation for our chat channel and we do that by doing the following: ```...
(COMMA_COMPOUND_SENTENCE)
[uncategorized] ~248-~248: Did you mean “I”?
Context: ...ll fail because in my chat channel, i have no such message as hello
even if...
(I_LOWERCASE_PREMIUM)
[uncategorized] ~248-~248: Did you mean “I”?
Context: ...have no such message as hello
even if i have the hello
message defined in my ...
(I_LOWERCASE_PREMIUM)
[typographical] ~381-~381: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...
(AS_YOU_CAN_SEE_COMMA)
[uncategorized] ~381-~381: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array -$ref
and...
(I_LOWERCASE_PREMIUM)
[style] ~381-~381: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array -$ref
and the reason is because you can pass multiple security types in...
(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)
[style] ~387-~387: Use ‘will’ instead of ‘going to’ if the following action is certain.
Context: ...ser is trying to join, a new connection is going to be established, which doesn't align wel...
(GOING_TO_WILL)
[grammar] ~547-~547: Possible agreement error. The noun thing seems to be countable; consider using: “a lot of interesting things”.
Context: ...owed the spec-first approach, we can do a lot of interesting thing with this document, such as: - **Gener...
(A_LOT_OF_NN)
[style] ~550-~550: Consider using a different verb to strengthen your wording.
Context: ...client or server code and models, while speeding up the development process and reducing th...
(SPEED_UP_ACCELERATE)
[style] ~570-~570: The phrase ‘feel free to’ is used quite frequently. Consider using a less frequent alternative to set your writing apart from others and make it sound more professional.
Context: ...n modern API design. ### References - Feel free to check out my [livestream](https://www.y...
(FEEL_FREE_TO_STYLE_ME)
🪛 Markdownlint (0.37.0)
markdown/blog/asyncapi-and-websocket.md
127-127: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
146-146: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
169-169: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
204-204: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
220-220: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
236-236: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
255-255: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
275-275: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
305-305: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
319-319: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
354-354: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
371-371: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
391-391: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
413-413: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🔇 Additional comments (1)
markdown/blog/asyncapi-and-websocket.md (1)
381-381
:
Correct technical inaccuracy in security scheme explanation.
The explanation of multiple security schemes is incorrect. When security schemes are specified in an array, all schemes must be satisfied (AND relationship), not just one (OR relationship).
-and the reason is because you can pass multiple security types in the security object, and only one of this security scheme needs to be satisfied to authorize a connection
+Multiple security schemes in an array form an AND relationship, meaning all schemes must be satisfied. To specify alternative schemes (OR relationship), you would need multiple array items.
Likely invalid or redundant comment.
🧰 Tools
🪛 LanguageTool
[typographical] ~381-~381: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...
(AS_YOU_CAN_SEE_COMMA)
[uncategorized] ~381-~381: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array -$ref
and...
(I_LOWERCASE_PREMIUM)
[style] ~381-~381: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array -$ref
and the reason is because you can pass multiple security types in...
(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)
Co-authored-by: Lukasz Gornicki <[email protected]>
Co-authored-by: Lukasz Gornicki <[email protected]>
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.
Actionable comments posted: 0
🧹 Nitpick comments (3)
markdown/blog/asyncapi-and-websocket.md (3)
401-401
: Fix typo in property nameThere's a typo in the property name.
- descritpion: The unique identifier of the chat room + description: The unique identifier of the chat room
127-127
: Add language specifiers to code blocksFor better syntax highlighting and documentation consistency, add the
yaml
language specifier to all AsyncAPI specification code blocks.Example:
-``` +```yamlAlso applies to: 146-146, 169-169, 204-204, 220-220, 236-236, 255-255, 275-275, 305-305, 319-319, 354-354, 371-371, 391-391, 413-413
🧰 Tools
🪛 Markdownlint (0.37.0)
127-127: null
Fenced code blocks should have a language specified(MD040, fenced-code-language)
70-70
: Fix grammar issuesSeveral grammar issues need attention:
- "The AsyncAPI channels allows" → "The AsyncAPI channels allow"
- "elements that works" → "elements that work"
- "Components in AsyncAPI helps holds" → "Components in AsyncAPI help hold"
- "create a operation" → "create an operation"
- "enabled connected client" → "enabled a connected client"
- "allows us to send message" → "allows us to send a message"
Also applies to: 72-72, 157-157, 218-218, 232-232, 253-253
🧰 Tools
🪛 LanguageTool
[uncategorized] ~70-~70: This verb does not appear to agree with the subject. Consider using a different form.
Context: .... ### Channels The AsyncAPI channels allows us to establish a bidirectional communi...(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
markdown/blog/asyncapi-and-websocket.md
(1 hunks)
🧰 Additional context used
🪛 LanguageTool
markdown/blog/asyncapi-and-websocket.md
[uncategorized] ~56-~56: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...obust ecosystem of tools, some of which is maintained by the AsyncAPI initiative. ...
(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~66-~66: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...ively. Now let's look at what channels looks like in an AsyncAPI document. ### Cha...
(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~70-~70: This verb does not appear to agree with the subject. Consider using a different form.
Context: .... ### Channels The AsyncAPI channels allows us to establish a bidirectional communi...
(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~72-~72: This verb does not appear to agree with the subject. Consider using a different form.
Context: ... of a number of different elements that works together to make communication between ...
(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~72-~72: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...eivers smooth. Some of these components includes, - Address: An optional string tha...
(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~79-~79: A comma might be missing here.
Context: ...cAPI, let's take a look at the next key concept which is messages. ### Messages I me...
(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
[uncategorized] ~96-~96: A comma might be missing here.
Context: .... Now let's take a look at another key concept which is called operations ### Operati...
(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
[uncategorized] ~96-~96: A period might be missing here.
Context: ... at another key concept which is called operations ### Operations Operations are one of ...
(AI_EN_LECTOR_MISSING_PUNCTUATION_PERIOD)
[uncategorized] ~102-~102: You might be missing the article “the” here.
Context: ...ving_ a message in that channel, making message flow clear and structured. Operations ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~157-~157: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...component Components in AsyncAPI helps holds a set of reusable objects for different...
(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~157-~157: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...a set of reusable objects for different aspect of the AsyncAPI specification. When you...
(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)
[grammar] ~157-~157: Did you mean “is being” or “has been”?
Context: ...ny effect on your API unless the object is been explicitly referenced from another prop...
(BEEN_PART_AGREEMENT)
[uncategorized] ~159-~159: Possible missing comma found.
Context: ... a set of required elements that can be defined such as the following: - Messages:...
(AI_HYDRA_LEO_MISSING_COMMA)
[misspelling] ~218-~218: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...given channel. So now we need to create a operation for our chat channel and ...
(EN_A_VS_AN)
[uncategorized] ~218-~218: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ate a operation for our chat channel and we do that by doing the following: ```...
(COMMA_COMPOUND_SENTENCE)
[uncategorized] ~232-~232: Possible missing article found.
Context: ...This basically means we've just enabled connected client to send
a message, but not any...
(AI_HYDRA_LEO_MISSING_A)
[uncategorized] ~248-~248: Did you mean “I”?
Context: ...ll fail because in my chat channel, i have no such message as hello
even if...
(I_LOWERCASE_PREMIUM)
[uncategorized] ~248-~248: Did you mean “I”?
Context: ...have no such message as hello
even if i have the hello
message defined in my ...
(I_LOWERCASE_PREMIUM)
[uncategorized] ~253-~253: Possible missing article found.
Context: ... first operation that allows us to send message, we also need to create another operati...
(AI_HYDRA_LEO_MISSING_A)
[uncategorized] ~253-~253: You might be missing the article “the” here.
Context: ...message. And we do that by doing almost same thing as sending a message except, inst...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[typographical] ~381-~381: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...
(AS_YOU_CAN_SEE_COMMA)
[uncategorized] ~381-~381: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array -$ref
and...
(I_LOWERCASE_PREMIUM)
[style] ~381-~381: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array -$ref
and the reason is because you can pass multiple security types in...
(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)
[style] ~387-~387: Use ‘will’ instead of ‘going to’ if the following action is certain.
Context: ...ser is trying to join, a new connection is going to be established, which doesn't align wel...
(GOING_TO_WILL)
[uncategorized] ~406-~406: The preposition “on” seems more likely in this position than the preposition “in”.
Context: ...making it ideal for exchanging messages in multiple channels simultaneously. ###...
(AI_EN_LECTOR_REPLACEMENT_PREPOSITION_IN_ON)
[grammar] ~547-~547: Possible agreement error. The noun thing seems to be countable; consider using: “a lot of interesting things”.
Context: ...owed the spec-first approach, we can do a lot of interesting thing with this document, such as: - **Gener...
(A_LOT_OF_NN)
[style] ~550-~550: Consider using a different verb to strengthen your wording.
Context: ...client or server code and models, while speeding up the development process and reducing th...
(SPEED_UP_ACCELERATE)
[style] ~570-~570: The phrase ‘feel free to’ is used quite frequently. Consider using a less frequent alternative to set your writing apart from others and make it sound more professional.
Context: ...n modern API design. ### References - Feel free to check out my [livestream](https://www.y...
(FEEL_FREE_TO_STYLE_ME)
🪛 Markdownlint (0.37.0)
markdown/blog/asyncapi-and-websocket.md
127-127: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
146-146: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
169-169: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
204-204: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
220-220: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
236-236: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
255-255: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
275-275: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
305-305: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
319-319: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
354-354: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
371-371: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
391-391: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
413-413: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🔇 Additional comments (3)
markdown/blog/asyncapi-and-websocket.md (3)
1-14
: LGTM!
The front matter is well-structured with all necessary metadata fields.
414-545
: LGTM! Well-structured AsyncAPI specification
The AsyncAPI specification is well-organized with:
- Clear separation of channels, operations, and components
- Proper use of references
- Comprehensive security definitions
- Detailed message schemas
381-381
:
Correct the security schemes explanation.
The explanation about security schemes is incorrect. When multiple security schemes are specified in an array, ALL schemes must be satisfied, not just one of them. If you want to specify alternative security schemes (OR relationship), you need to use multiple array items.
-and the reason is because you can pass multiple security types in the security object, and only one of this security scheme needs to be satisfied to authorize a connection
+Multiple security schemes in a single array item form an AND relationship, meaning all schemes must be satisfied. To specify alternative schemes (OR relationship), you would need multiple array items.
Likely invalid or redundant comment.
🧰 Tools
🪛 LanguageTool
[typographical] ~381-~381: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...
(AS_YOU_CAN_SEE_COMMA)
[uncategorized] ~381-~381: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array -$ref
and...
(I_LOWERCASE_PREMIUM)
[style] ~381-~381: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array -$ref
and the reason is because you can pass multiple security types in...
(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)
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.
Actionable comments posted: 1
🧹 Nitpick comments (3)
markdown/blog/asyncapi-and-websocket.md (3)
127-127
: Add language specifiers to code blocksAll code blocks should specify the language for proper syntax highlighting. Add
yaml
as the language specifier for AsyncAPI specification blocks.Example:
-``` +```yamlAlso applies to: 146-146, 169-169, 204-204, 220-220, 236-236, 255-255, 275-275, 305-305, 319-319, 353-353, 370-370, 390-390, 412-412
🧰 Tools
🪛 Markdownlint (0.37.0)
127-127: null
Fenced code blocks should have a language specified(MD040, fenced-code-language)
463-463
: Fix operation name to match its actionThe operation name
receiveMessage
should be consistent with other operation names in the document.- receiveMessage: + getMessage:
74-74
: Fix grammar and spelling issuesSeveral grammar and spelling issues need attention:
- Add missing commas after introductory phrases
- Use "an" instead of "a" before "operation"
- Capitalize "i" to "I"
- Replace "is been" with "has been"
Examples:
-address This could be +address, This could be -create a operation +create an operation -i have no such message +I have no such message -object is been explicitly +object has been explicitlyAlso applies to: 79-79, 96-96, 157-157, 218-218, 248-248, 380-380
🧰 Tools
🪛 LanguageTool
[uncategorized] ~74-~74: Possible missing comma found.
Context: ...nal string that specifies the channel's address This could be a topic name, routing key...(AI_HYDRA_LEO_MISSING_COMMA)
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
markdown/blog/asyncapi-and-websocket.md
(1 hunks)
🧰 Additional context used
🪛 LanguageTool
markdown/blog/asyncapi-and-websocket.md
[uncategorized] ~74-~74: Possible missing comma found.
Context: ...nal string that specifies the channel's address This could be a topic name, routing key...
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~79-~79: Possible missing comma found.
Context: ...cAPI, let's take a look at the next key concept which is messages. ### Messages I me...
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~96-~96: Possible missing comma found.
Context: .... Now let's take a look at another key concept which is called operations ### Operati...
(AI_HYDRA_LEO_MISSING_COMMA)
[grammar] ~157-~157: Did you mean “is being” or “has been”?
Context: ...ny effect on your API unless the object is been explicitly referenced from another prop...
(BEEN_PART_AGREEMENT)
[uncategorized] ~159-~159: Possible missing comma found.
Context: ... a set of required elements that can be defined such as the following: - Messages:...
(AI_HYDRA_LEO_MISSING_COMMA)
[misspelling] ~218-~218: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...given channel. So now we need to create a operation for our chat channel and ...
(EN_A_VS_AN)
[uncategorized] ~218-~218: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ate a operation for our chat channel and we do that by doing the following: ```...
(COMMA_COMPOUND_SENTENCE)
[uncategorized] ~248-~248: Did you mean “I”?
Context: ...ll fail because in my chat channel, i have no such message as hello
even if...
(I_LOWERCASE_PREMIUM)
[uncategorized] ~248-~248: Did you mean “I”?
Context: ...have no such message as hello
even if i have the hello
message defined in my ...
(I_LOWERCASE_PREMIUM)
[uncategorized] ~253-~253: Possible missing article found.
Context: ... first operation that allows us to send message, we also need to create another operati...
(AI_HYDRA_LEO_MISSING_A)
[typographical] ~380-~380: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...
(AS_YOU_CAN_SEE_COMMA)
[uncategorized] ~380-~380: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array -$ref
and...
(I_LOWERCASE_PREMIUM)
[style] ~380-~380: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array -$ref
and the reason is because you can pass multiple security types in...
(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)
[uncategorized] ~380-~380: Possible missing comma found.
Context: ...ection. But in our case, we only needed one so yea, let's role with that. ### Ste...
(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~386-~386: Use ‘will’ instead of ‘going to’ if the following action is certain.
Context: ...ser is trying to join, a new connection is going to be established, which doesn't align wel...
(GOING_TO_WILL)
[grammar] ~546-~546: Possible agreement error. The noun thing seems to be countable; consider using: “a lot of interesting things”.
Context: ...owed the spec-first approach, we can do a lot of interesting thing with this document, such as: - **Gener...
(A_LOT_OF_NN)
[style] ~549-~549: Consider using a different verb to strengthen your wording.
Context: ...client or server code and models, while speeding up the development process and reducing th...
(SPEED_UP_ACCELERATE)
[style] ~569-~569: The phrase ‘feel free to’ is used quite frequently. Consider using a less frequent alternative to set your writing apart from others and make it sound more professional.
Context: ...n modern API design. ### References - Feel free to check out my [livestream](https://www.y...
(FEEL_FREE_TO_STYLE_ME)
🪛 Markdownlint (0.37.0)
markdown/blog/asyncapi-and-websocket.md
127-127: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
146-146: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
169-169: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
204-204: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
220-220: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
236-236: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
255-255: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
275-275: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
305-305: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
319-319: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
353-353: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
370-370: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
390-390: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
412-412: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
⏰ Context from checks skipped due to timeout of 180000ms (1)
- GitHub Check: Test NodeJS PR - macos-13
🔇 Additional comments (2)
markdown/blog/asyncapi-and-websocket.md (2)
3-3
: Update the blog post dateThe post date is set to January 2025, which is in the future. This might cause issues with blog post sorting and RSS feeds.
Please update the date to a current or past date.
380-380
:⚠️ Potential issueCorrect the security schemes explanation
The explanation about security schemes is incorrect. When multiple security schemes are specified in an array, ALL schemes must be satisfied, not just one of them. If you want to specify alternative security schemes (OR relationship), you need to use multiple array items.
-and the reason is because you can pass multiple security types in the security object, and only one of this security scheme needs to be satisfied to authorize a connection +Multiple security schemes in a single array item form an AND relationship, meaning all schemes must be satisfied. To specify alternative schemes (OR relationship), you would need multiple array items.Likely invalid or redundant comment.
🧰 Tools
🪛 LanguageTool
[typographical] ~380-~380: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...(AS_YOU_CAN_SEE_COMMA)
[uncategorized] ~380-~380: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array-$ref
and...(I_LOWERCASE_PREMIUM)
[style] ~380-~380: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array-$ref
and the reason is because you can pass multiple security types in...(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)
[uncategorized] ~380-~380: Possible missing comma found.
Context: ...ection. But in our case, we only needed one so yea, let's role with that. ### Ste...(AI_HYDRA_LEO_MISSING_COMMA)
required: | ||
- messageId | ||
- senderId | ||
- content | ||
- timestamp |
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.
Fix YAML indentation in required fields
The required
fields should be aligned with properties
at the same level in the YAML structure.
Apply this fix to both message components:
payload:
type: object
properties:
# ... property definitions ...
- required:
- - messageId
- - senderId
- - content
- - timestamp
+ required:
+ - messageId
+ - senderId
+ - content
+ - timestamp
Also applies to: 534-537
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.
I checked and it's a false positive suggested changes
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.
@AceTheCreator Upon review, this is actually not a false positive. According to the JSON Schema specification, the required
field should be at the same level as properties
, not nested within it. When required
is nested under properties
, it's treated as an additional property rather than a schema constraint that lists the required fields. The correct structure should be:
payload:
type: object
properties:
messageId:
type: string
# ...other properties
required:
- messageId
# ...other required fields
Would you like me to provide more details about JSON Schema structure, or would you prefer to keep this indentation as is?
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.
Actionable comments posted: 1
🧹 Nitpick comments (1)
markdown/blog/asyncapi-and-websocket.md (1)
79-79
: Address grammar and style issuesConsider the following improvements for better readability:
- Add missing commas in compound sentences
- Capitalize "i" to "I" consistently throughout the text
- Replace "going to" with "will" for more formal tone
- Fix "a lot of interesting thing" to "things"
- Consider alternatives to casual phrases like "feel free to"
Also applies to: 96-96, 159-159, 218-218, 232-232, 248-248, 253-253, 380-380, 386-386, 546-546, 569-569
🧰 Tools
🪛 LanguageTool
[uncategorized] ~79-~79: Possible missing comma found.
Context: ...cAPI, let's take a look at the next key concept which is messages. ### Messages I me...(AI_HYDRA_LEO_MISSING_COMMA)
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
markdown/blog/asyncapi-and-websocket.md
(1 hunks)
🧰 Additional context used
🪛 LanguageTool
markdown/blog/asyncapi-and-websocket.md
[uncategorized] ~79-~79: Possible missing comma found.
Context: ...cAPI, let's take a look at the next key concept which is messages. ### Messages I me...
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~96-~96: Possible missing comma found.
Context: .... Now let's take a look at another key concept which is called operations ### Operati...
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~159-~159: Possible missing comma found.
Context: ... a set of required elements that can be defined such as the following: - Messages:...
(AI_HYDRA_LEO_MISSING_COMMA)
[uncategorized] ~218-~218: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...te an operation for our chat channel and we do that by doing the following: ```...
(COMMA_COMPOUND_SENTENCE)
[uncategorized] ~232-~232: Possible missing article found.
Context: ...This basically means we've just enabled connected client to send
a message, but not any...
(AI_HYDRA_LEO_MISSING_A)
[uncategorized] ~248-~248: Did you mean “I”?
Context: ...have no such message as hello
even if i have the hello
message defined in my ...
(I_LOWERCASE_PREMIUM)
[uncategorized] ~253-~253: Possible missing article found.
Context: ... first operation that allows us to send message, we also need to create another operati...
(AI_HYDRA_LEO_MISSING_A)
[typographical] ~380-~380: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...
(AS_YOU_CAN_SEE_COMMA)
[uncategorized] ~380-~380: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array -$ref
and...
(I_LOWERCASE_PREMIUM)
[style] ~380-~380: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array -$ref
and the reason is because you can pass multiple security types in...
(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)
[style] ~386-~386: Use ‘will’ instead of ‘going to’ if the following action is certain.
Context: ...ser is trying to join, a new connection is going to be established, which doesn't align wel...
(GOING_TO_WILL)
[grammar] ~546-~546: Possible agreement error. The noun thing seems to be countable; consider using: “a lot of interesting things”.
Context: ...owed the spec-first approach, we can do a lot of interesting thing with this document, such as: - **Gener...
(A_LOT_OF_NN)
[style] ~549-~549: Consider using a different verb to strengthen your wording.
Context: ...client or server code and models, while speeding up the development process and reducing th...
(SPEED_UP_ACCELERATE)
[style] ~569-~569: The phrase ‘feel free to’ is used quite frequently. Consider using a less frequent alternative to set your writing apart from others and make it sound more professional.
Context: ...n modern API design. ### References - Feel free to check out my [livestream](https://www.y...
(FEEL_FREE_TO_STYLE_ME)
🔇 Additional comments (3)
markdown/blog/asyncapi-and-websocket.md (3)
3-3
: Update the blog post dateThe post date is set to 2025-01-10, which is in the future. This might cause issues with content management systems or RSS feeds. Consider updating it to the current date.
192-196
: Fix YAML indentation in required fieldsThe
required
field should be aligned withproperties
at the same level in the YAML structure.
380-380
: Correct the security schemes explanationThe explanation about security schemes is incorrect. When multiple security schemes are specified in an array, ALL schemes must be satisfied, not just one of them.
🧰 Tools
🪛 LanguageTool
[typographical] ~380-~380: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...(AS_YOU_CAN_SEE_COMMA)
[uncategorized] ~380-~380: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array-$ref
and...(I_LOWERCASE_PREMIUM)
[style] ~380-~380: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array-$ref
and the reason is because you can pass multiple security types in...(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)
userJoined: | ||
description: Event when a user joins the chat room | ||
$ref: '#/components/messages/status' | ||
|
||
userLeft: | ||
description: Event when a user leaves the chat room | ||
$ref: '#/components/messages/status' |
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.
🛠️ Refactor suggestion
Maintain consistent operation message references
The message references in the operations are inconsistent:
- In the channel definition:
userJoined
anduserLeft
- In the operations:
userJoin
anduserLeave
This inconsistency could lead to confusion. Choose one naming convention and stick to it throughout the document.
Also applies to: 477-486
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.
Actionable comments posted: 0
🧹 Nitpick comments (2)
markdown/blog/asyncapi-and-websocket.md (2)
31-31
: Polish the writing styleConsider these improvements to enhance readability:
- Line 31: Add a space after the parenthesis in "intervals(a process"
- Line 70: "yea, that's it" sounds informal for a technical article
- Line 380: Replace "the reason is because" with "because" to avoid wordiness
Also applies to: 70-70, 380-380
569-569
: Make references more professionalInstead of "Feel free to check out", consider using more professional language like "Watch my livestream for..." or "For a detailed walkthrough, refer to my livestream..."
🧰 Tools
🪛 LanguageTool
[style] ~569-~569: The phrase ‘feel free to’ is used quite frequently. Consider using a less frequent alternative to set your writing apart from others and make it sound more professional.
Context: ...n modern API design. ### References - Feel free to check out my [livestream](https://www.y...(FEEL_FREE_TO_STYLE_ME)
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
markdown/blog/asyncapi-and-websocket.md
(1 hunks)
🧰 Additional context used
🪛 LanguageTool
markdown/blog/asyncapi-and-websocket.md
[uncategorized] ~218-~218: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...te an operation for our chat channel and we do that by doing the following: ```...
(COMMA_COMPOUND_SENTENCE)
[uncategorized] ~248-~248: Did you mean “I”?
Context: ...have no such message as hello
even if i have the hello
message defined in my ...
(I_LOWERCASE_PREMIUM)
[typographical] ~380-~380: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...
(AS_YOU_CAN_SEE_COMMA)
[uncategorized] ~380-~380: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array -$ref
and...
(I_LOWERCASE_PREMIUM)
[style] ~380-~380: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array -$ref
and the reason is because you can pass multiple security types in...
(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)
[style] ~386-~386: Use ‘will’ instead of ‘going to’ if the following action is certain.
Context: ...ser is trying to join, a new connection is going to be established, which doesn't align wel...
(GOING_TO_WILL)
[grammar] ~546-~546: Possible agreement error. The noun thing seems to be countable; consider using: “a lot of interesting things”.
Context: ...owed the spec-first approach, we can do a lot of interesting thing with this document, such as: - **Gener...
(A_LOT_OF_NN)
[style] ~549-~549: Consider using a different verb to strengthen your wording.
Context: ...client or server code and models, while speeding up the development process and reducing th...
(SPEED_UP_ACCELERATE)
[style] ~569-~569: The phrase ‘feel free to’ is used quite frequently. Consider using a less frequent alternative to set your writing apart from others and make it sound more professional.
Context: ...n modern API design. ### References - Feel free to check out my [livestream](https://www.y...
(FEEL_FREE_TO_STYLE_ME)
🔇 Additional comments (5)
markdown/blog/asyncapi-and-websocket.md (5)
3-3
: Update the blog post dateThe blog post date is set to January 2025, which is in the future. Consider updating it to a current or past date.
512-516
: Fix YAML indentation in required fieldsThe
required
fields should be aligned withproperties
at the same level.Also applies to: 534-537
477-486
: Maintain consistent message referencesThe message references in the operations are inconsistent:
- Channel messages use:
userJoin
anduserLeave
- Operation references use:
userJoined
anduserLeft
380-380
: Correct the security schemes explanationThe explanation about security schemes is incorrect. When multiple security schemes are specified in an array, ALL schemes must be satisfied, not just one of them.
🧰 Tools
🪛 LanguageTool
[typographical] ~380-~380: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...(AS_YOU_CAN_SEE_COMMA)
[uncategorized] ~380-~380: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array-$ref
and...(I_LOWERCASE_PREMIUM)
[style] ~380-~380: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array-$ref
and the reason is because you can pass multiple security types in...(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)
1-571
: Well-structured and comprehensive article!The article effectively explains the integration of AsyncAPI with WebSocket, providing clear explanations and practical examples. The code samples are well-organized and the concepts are thoroughly explained.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~218-~218: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...te an operation for our chat channel and we do that by doing the following: ```...(COMMA_COMPOUND_SENTENCE)
[uncategorized] ~248-~248: Did you mean “I”?
Context: ...have no such message ashello
even if i have thehello
message defined in my ...(I_LOWERCASE_PREMIUM)
[typographical] ~380-~380: Consider adding a comma here.
Context: ...ySchemes/apiKeyHeader' ``` As you can see we added a security property to the dev...(AS_YOU_CAN_SEE_COMMA)
[uncategorized] ~380-~380: Did you mean “I”?
Context: ...server, and one thing you can notice is i'm specifying it as an array-$ref
and...(I_LOWERCASE_PREMIUM)
[style] ~380-~380: ‘the reason is because’ might be wordy. Consider a shorter alternative.
Context: ...m specifying it as an array-$ref
and the reason is because you can pass multiple security types in...(EN_WORDINESS_PREMIUM_THE_REASON_IS_BECAUSE)
[style] ~386-~386: Use ‘will’ instead of ‘going to’ if the following action is certain.
Context: ...ser is trying to join, a new connection is going to be established, which doesn't align wel...(GOING_TO_WILL)
[grammar] ~546-~546: Possible agreement error. The noun thing seems to be countable; consider using: “a lot of interesting things”.
Context: ...owed the spec-first approach, we can do a lot of interesting thing with this document, such as: - **Gener...(A_LOT_OF_NN)
[style] ~549-~549: Consider using a different verb to strengthen your wording.
Context: ...client or server code and models, while speeding up the development process and reducing th...(SPEED_UP_ACCELERATE)
[style] ~569-~569: The phrase ‘feel free to’ is used quite frequently. Consider using a less frequent alternative to set your writing apart from others and make it sound more professional.
Context: ...n modern API design. ### References - Feel free to check out my [livestream](https://www.y...(FEEL_FREE_TO_STYLE_ME)
A new websocket article using the latest AsyncAPI Spec version.
Summary by CodeRabbit
New Features
Documentation