List of STOMP Client Libraries: Difference between revisions

From Open Rail Data Wiki
EvelynSnow (talk | contribs)
add npm stomp-client
EvelynSnow (talk | contribs)
add node stompit, embolden all 1.2 clients
Line 7: Line 7:


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 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.


== List of STOMP clients ==
== List of STOMP clients ==
Line 17: Line 19:
| Java || Gozirra || https://github.com/pedroteixeira/gozirra || 1.0 || no || no || ? || ''Not suitable for feeds''
| Java || Gozirra || https://github.com/pedroteixeira/gozirra || 1.0 || no || no || ? || ''Not suitable for feeds''
|-
|-
| JS || stomp-client || 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>
| 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>
|-
|-
| Elixir || Barytherium 0.6.2 || https://hex.pm/packages/barytherium || 1.2 || yes || yes || yes ||
| JS || '''stompit''' 1.0.0 || https://www.npmjs.com/package/stompit || 1.2 || yes || yes || yes ||  
|-
|-
| Erlang || Platybelodon 0.1.0 || https://hex.pm/packages/platybelodon || 1.2 || 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 ||
|-
|-
|}
|}

Revision as of 12:41, 3 November 2023

STOMP is a relatively simple protocol, which means that there's a large number of third-party clients available for them, many of which don't completely comply with the specifications. Many of these are not suitable for use on the feeds, for various reasons.

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.

List of STOMP clients

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[1]
JS stompit 1.0.0 https://www.npmjs.com/package/stompit 1.2 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

References