How to connect to the Spire Maritime AIS TCP V1 feed.
Note: This documentation is applicable only to the TCP V1 feed. If you are not sure which TCP feed to connect to (V1 or V2), please contact us. The TCP V1 server will be decommissioned once all existing TCP V1 users have been migrated to TCP V2. Target date for final migration is end of August 2021. For information about how to connect to the TCP V2 server, please refer to this FAQ.
Connect to the Spire Sense TCP Server
To be able to use the Spire AIS TCP Service, an authorization token needed, which is used to authenticate the service.
Initiating the TCP Feed: Initiate Connection.
For TCP connections, client systems must open a port connection to the Spire service on the Service Address : streaming.ais.spire.com
Port number: 56784.
To initiate the stream of messages, and initial authentication string must be sent as below:
Note: Depending on which system you are using, you might want to send a new line ‘\n’ to make sure that the token is sent in one piece directly
If connection is successful then the stream of AIS data in NMEA format will start.
Possible initial delay.
Once your connection has been established, AIS messages should begin streaming into your client. Note: It can take up to 60 seconds for the TCP server to start up a new stream after sending your token.
Recommended Reconnection Strategy
The TCP server should keep your connection alive indefinitely and send keep-alives every 15 minutes to your client, however, exceptions still happen. Occasionally there might still be instances of unexpected disconnects to the TCP feed. In these cases, you can simply reconnect, re-authenticate with your token and the data stream will resume.
In order to minimize loss of data and impact on latency, we recommend setting up a reconnection method that automatically acts within an hour of any unexpected disconnect.
Interruptions continue where left off
The behaviour of the TCP service is to provide a continuous stream of AIS messages in the order that they are received by Spire systems. If the service stops, due to disconnection or client system problems, then no matter how long the delay in re-connecting, the stream of data will continue from the time of disconnection and no data will be missed. If however the service is disconnected for a long time, then it can cause a large backlog of now old data to be streamed before the service catches up to current time and entirely new messages are received.
AIS message 5 is commonly received in multiple parts, generally 2 message sentences. Spire AIS stream always provides these sequentially so no grouping message ID is required
An example of multi part AIS message 5
parts of the AIS message stream above explained
message timestamp and checksum \c:1601972308*58
message header !AIVDM
message sentence count 2
message sentence number 1 or 2
message number 5
AIS channel A or B
Encoded AIS data and checksum (the rest of the message record)
Example Python to connect
A simple python program for connecting to the Spire TCP service is available for testing from this Google Drive link https://drive.google.com/drive/folders/1UHH7vGTVZCxqrATQGWsMkFtV0RdPt4Nx?usp=sharing
It can be called in the following fashion (using a demo or client authentication token)
python call_spire_tcp_feed_parameters.py test_tcp.txt 100 streaming.ais.spire.com 56784 2 <CLIENT AUTHENTICATION TOKEN>
python call_spire_tcp_feed_parameters.py test_tcp.txt 100 streaming.ais.spire.com 56784 2 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjdXN0b21lciI6eyJpZCI6IjcxMSIsIm5hbWUiOiJTcGlyZSBUQ1AgREVNTyBET1ZFUiIsInV1aWQiOiI3MTEifSwiaXNzIjoic3BpcmUuY29tIiwiaWF0IjoxNTk1NDA0MTUxfQ.kOiZqAYH2-uY6EJZHLKwuqyMhP763CttvFm8DuQZQW8
python3 call_spire_tcp_feed_parameters.py t
est_tcp.txt 100 streaming.ais.spire.com 56784 2 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjdXN0b21lciI6eyJpZCI6IjcxMSIsIm5hbWUiOiJTcGlyZSBUQ1AgRE
Program Start Time: 2020-07-22T09:55:43+02:00
server set to parameter value: streaming.ais.spire.com
Run TCP client for 2 minutes
Debug set to default of False - False
Parameter Debug = : False
Using API Token from parameters
Using API Token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjdXN0b21lciI6eyJpZCI6IjcxMSIsIm5hbWUiOiJTcGlyZSBUQ1AgREVNTyBET1ZFUiIsInV1aWQiOiI3MTEi
About to try connecting to:
Server: streaming.ais.spire.com on port: 56784
Writing text data stream to file test_tcp.txt20200722-075543.txt
Writing nmea data stream to file test_tcp.txt20200722-075543_nmea.txt
Setting job message limit : 100
program has run for 0.0 minutes. 20200722-075546 Last Minute captured 1 records.
Stopping as max_records number reached: 100
Stopping as max_records number reached: 100
Stopped after receiving 100 messages 100
API Processing ran from 20200722-075543 to 20200722-095546 received 100 lines of results
Program run from 20200722-075543 to 20200722-095546 took (0.0, 2.779322) minutes
Start time as unix time: 1595397343.0
End time as unix time: 1595397346.0
Elapsed time in seconds: 3
wc -l test_tcp.txt20200722-075543_nmea.txt
Showing the captured results
head -5 test_tcp.txt20200722-075543_nmea.tx
For further questions or support please submit questions to the Spire Sales Engineering team using our client web support form here https://spire.com/developers/support/