List of STOMP Client Libraries: Difference between revisions
EvelynSnow (talk | contribs) Add stomp.py |
EvelynSnow (talk | contribs) Reword anti-recommendation section heading, add perl Net::STOMP::Client |
||
(One intermediate revision by the same user not shown) | |||
Line 10: | Line 10: | ||
If a library supports all 1.2 features when tested, its name will be in bold. | If a library supports all 1.2 features when tested, its name will be in bold. | ||
== | == Potentially viable STOMP clients == | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
|- | |- | ||
! Language !! Name/version !! Links !! Highest version supported !! heartbeating !! acknowledgements !! content-length !! remarks | ! Language !! Name/version !! Links !! Highest version supported !! heartbeating !! acknowledgements !! content-length !! remarks | ||
|- | |- | ||
| PHP || '''stomp-php''' 5.1.0 || https://github.com/stomp-php/stomp-php https://packagist.org/packages/stomp-php/stomp-php || 1.2 || yes || yes || yes || OK for feeds, not necessarily for general use <ref>https://codeberg.org/Subarrow/Selenetherium/src/branch/main/examples/php/stomp-php</ref> | | PHP || '''stomp-php''' 5.1.0 || https://github.com/stomp-php/stomp-php https://packagist.org/packages/stomp-php/stomp-php || 1.2 || yes || yes || yes || OK for feeds, not necessarily for general use <ref>https://codeberg.org/Subarrow/Selenetherium/src/branch/main/examples/php/stomp-php</ref> | ||
Line 21: | Line 19: | ||
| Python || '''stomp.py''' 8.1.0 || https://pypi.org/project/stomp.py/ || 1.2 || yes || yes || yes || | | Python || '''stomp.py''' 8.1.0 || https://pypi.org/project/stomp.py/ || 1.2 || yes || yes || yes || | ||
|- | |- | ||
| | | Perl || '''Net::STOMP::Client''' 2.5 || https://metacpan.org/pod/Net::STOMP::Client || 1.2 || yes || yes || yes || | ||
|- | |- | ||
| JS || '''stompit''' 1.0.0 || https://www.npmjs.com/package/stompit || 1.2 || yes || yes || yes || | | JS || '''stompit''' 1.0.0 || https://www.npmjs.com/package/stompit || 1.2 || yes || yes || yes || | ||
Line 34: | Line 30: | ||
|- | |- | ||
| Erlang || '''Platybelodon''' 0.1.0 || https://hex.pm/packages/platybelodon || 1.2 || yes || yes || yes || | | Erlang || '''Platybelodon''' 0.1.0 || https://hex.pm/packages/platybelodon || 1.2 || yes || yes || yes || | ||
|- | |||
|} | |||
== Non-recommended STOMP clients == | |||
Clients which only support 1.0 with a viable alternative, or which have significant bugs | |||
{| class="wikitable sortable" | |||
|- | |||
! Language !! Name/version !! Links !! Highest version supported !! heartbeating !! acknowledgements !! content-length !! remarks | |||
|- | |||
| PHP || stomp 2.0.3 || https://www.php.net/manual/en/class.stomp.php https://pecl.php.net/package/stomp || 1.0 || no || yes || yes || | |||
|- | |||
| Java || Gozirra || https://github.com/pedroteixeira/gozirra || 1.0 || no || no || ? || ''Not suitable for feeds'' | |||
|- | |||
| JS || stomp-client 0.9.0 || https://www.npmjs.com/package/stomp-client || 1.0 || no || yes || yes || claimed 1.1 support is broken<ref>https://codeberg.org/Subarrow/Selenetherium/src/branch/main/examples/js/stomp-client/README.md</ref> | |||
|- | |- | ||
|} | |} |
Latest revision as of 14:00, 8 November 2023
STOMP is a relatively simple protocol, which means that there's a large number of third-party libraries available for it, of varying quality. This list is intended to help with the process of working out which libraries to avoid, and which might be more suitable. Note that this list is not exhaustive, is not based on extensive testing, and it's not a comprehensive list of recommendations.
The table
- Highest version supported – Highest STOMP version the client supports. 1.2 is best, 1.1 is usually acceptable, 1.0 lacks support for heartbeating.
- Acknowledgements – Can you send an ACK for a frame? If not, you won't be able to set up a durable subscription.
- content-length – If a client doesn't support the content-length header, it won't work with the push port.
If using the Network Rail feeds on the Artemis server (which will eventually become the only option), if your client sends nothing for 60 seconds, you will be disconnected. If you're using a relatively high-volume feed, acknowledgements are one way around this with STOMP 1.0, on later versions, heartbeating is the way to go.
If a library supports all 1.2 features when tested, its name will be in bold.
Potentially viable STOMP clients
Language | Name/version | Links | Highest version supported | heartbeating | acknowledgements | content-length | remarks |
---|---|---|---|---|---|---|---|
PHP | stomp-php 5.1.0 | https://github.com/stomp-php/stomp-php https://packagist.org/packages/stomp-php/stomp-php | 1.2 | yes | yes | yes | OK for feeds, not necessarily for general use [1] |
Python | stomp.py 8.1.0 | https://pypi.org/project/stomp.py/ | 1.2 | yes | yes | yes | |
Perl | Net::STOMP::Client 2.5 | https://metacpan.org/pod/Net::STOMP::Client | 1.2 | yes | yes | yes | |
JS | stompit 1.0.0 | https://www.npmjs.com/package/stompit | 1.2 | yes | yes | yes | |
Go | stomp 3.0.5 | https://pkg.go.dev/github.com/go-stomp/stomp/v3 | 1.2 | yes | yes | yes | |
Ruby | stomp 1.4.10 | https://rubygems.org/gems/stomp | 1.1 | yes | yes | yes | |
Elixir | Barytherium 0.6.2 | https://hex.pm/packages/barytherium | 1.2 | yes | yes | yes | |
Erlang | Platybelodon 0.1.0 | https://hex.pm/packages/platybelodon | 1.2 | yes | yes | yes |
Non-recommended STOMP clients
Clients which only support 1.0 with a viable alternative, or which have significant bugs
Language | Name/version | Links | Highest version supported | heartbeating | acknowledgements | content-length | remarks |
---|---|---|---|---|---|---|---|
PHP | stomp 2.0.3 | https://www.php.net/manual/en/class.stomp.php https://pecl.php.net/package/stomp | 1.0 | no | yes | yes | |
Java | Gozirra | https://github.com/pedroteixeira/gozirra | 1.0 | no | no | ? | Not suitable for feeds |
JS | stomp-client 0.9.0 | https://www.npmjs.com/package/stomp-client | 1.0 | no | yes | yes | claimed 1.1 support is broken[2] |