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

MQTT-support #766

Open
wants to merge 168 commits into
base: main
Choose a base branch
from
Open

MQTT-support #766

wants to merge 168 commits into from

Conversation

kickster97
Copy link
Member

@kickster97 kickster97 commented Aug 26, 2024

WHAT is this pull request doing?

An MQTT-session inherits AMQP::Queue and extends with MQTT functionality.
MQTT exchange(topic) will only accept activity from an MQTT client, that will be responsible for routing messages to the MQTT-session.
The mqtt exchange handles MQTT routing keys etc. without needing to do conversions.

If we want an AMQP client send messages to an MQTT session, or vice versa, we can do an exchange to exchange binding and do conversions then.

HOW can this pull request be tested?

Specs have been migrated from Myra and fully cover the MQTT protocol, run with crystal spec.

static/js/connections.js Outdated Show resolved Hide resolved
static/js/connections.js Outdated Show resolved Hide resolved
src/lavinmq/vhost.cr Outdated Show resolved Hide resolved
src/lavinmq/vhost.cr Outdated Show resolved Hide resolved
src/lavinmq/mqtt/client.cr Outdated Show resolved Hide resolved
src/lavinmq/mqtt/client.cr Outdated Show resolved Hide resolved
src/lavinmq/mqtt/broker.cr Outdated Show resolved Hide resolved
@spuun
Copy link
Member

spuun commented Sep 24, 2024

I think you can (and maybe even should) build clean session by reusing the auto delete feature of queues.

@spuun
Copy link
Member

spuun commented Oct 12, 2024

About #803 (comment)

That connect spec passes, but for the wrong reason. Or well, the socket is closed but not because it receives the wrong packet type, but because of the bug that #803 will fix. When that bug is fixed i still think that the spec will pass, but for the right reason.

I guess the spec could be changed to send a PUBLISH instead (the packet must be greater than 8 byte to not trigger the bug).

@spuun
Copy link
Member

spuun commented Oct 12, 2024

After giving it a second thought I've concluded that we should change the spec to use some other packet type.

@kickster97
Copy link
Member Author

After giving it a second thought I've concluded that we should change the spec to use some other packet type.

ok I will change the spec then! thanks :)

@carlhoerberg
Copy link
Member

Often it's more efficient to yield than to capture and then call a block.

src/lavinmq/mqtt/broker.cr Outdated Show resolved Hide resolved
src/lavinmq/exchange/mqtt.cr Outdated Show resolved Hide resolved
src/lavinmq/mqtt/client.cr Outdated Show resolved Hide resolved
src/lavinmq/mqtt/client.cr Outdated Show resolved Hide resolved
src/lavinmq/mqtt/client.cr Outdated Show resolved Hide resolved
src/lavinmq/mqtt/client.cr Outdated Show resolved Hide resolved
src/lavinmq/vhost.cr Outdated Show resolved Hide resolved
@kickster97 kickster97 marked this pull request as ready for review November 15, 2024 07:42
@kickster97 kickster97 requested a review from a team as a code owner November 15, 2024 07:42
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.

4 participants