Crates.io | sobani-tracker |
lib.rs | sobani-tracker |
version | 0.1.0 |
source | src |
created_at | 2020-04-17 09:02:10.791299 |
updated_at | 2020-04-17 09:02:10.791299 |
description | Sobani tracker server written in Rust, provide tracker service for Sobani users |
homepage | https://github.com/BlueCocoa/sobani-tracker-rust |
repository | https://github.com/BlueCocoa/sobani-tracker-rust |
max_upload_size | |
id | 231083 |
size | 37,351 |
Aim to set up a tracker server for sobani service and clients
Clone to your instance
git clone https://github.com/BlueCocoa/sobani-tracker-rust.git
Compile
cd sobani-tracker-rust
cargo build --release
Start server
cargo run --release
Announce action relates to the first connection from peer to server, within this action, a client send three parameters to tracker server in order to record and make the share action possible.
If sending is successful, an announced object will be returned.
Field | Type | Required | Description |
---|---|---|---|
action | string | yes | Fixed value, "announce" |
Expected response from server:
{
"action": "announced",
"data": {
"shareId": "1AbhoECj"
}
}
alive
action meant to make maintaining the connection and the sharing session valid and possible by rapidly sending a packet to server to report the Alive
state of the client. By doing this, server will store the session and shareId while the clients are alive, if a client stopped to send a packet, server will delete the related shareId and multiaddr it announced before. (Default expiration time will be 5 minutes)
Push action tells the server the unique shareId of the target client the peers shared. Tracker server respond with the IP:Port
back to the requesting client, so on, the client can try to establish the connection between.
If sending is successful, a pushed message is returned.
Field | Type | Required | Description |
---|---|---|---|
action | string | yes | Fixed value, "push" |
data | dict | yes | The requestee's info |
pushed data is demostrated below
Field | Type | Required | Description |
---|---|---|---|
peeraddr | string | yes | IP:Port |
peerShareId | string | yes | ShareId |
Expected response from server:
{
"action": "pushed",
"data": {
"peeraddr": "1.2.3.4:23333",
"peerShareId": "1AbhoECj"
}
}
Also, the tracker will send an income
message to the requestee
Field | Type | Required | Description |
---|---|---|---|
action | string | yes | Fixed value, "income" |
data | dict | yes | The requestor's info |
income data is demostrated below
Field | Type | Required | Description |
---|---|---|---|
peeraddr | string | yes | IP:Port |
peerShareId | string | yes | ShareId |
Expected income message from server:
{
"action": "income",
"data": {
"peeraddr": "1.2.3.4:23333",
"peerShareId": "1AbhoECj"
}
}
Field | Type | Required | Description |
---|---|---|---|
action | string | yes | Fixed value, "announced" |
data | dict | yes |
Field | Type | Required | Description |
---|---|---|---|
shareId | string | yes | shareId generated by server side |
Field | Type | Required | Description |
---|---|---|---|
action | string | yes | Fixed value, "pushed" |
data | dict | yes |
Field | Type | Required | Description |
---|---|---|---|
peeraddr | string | yes | IP:Port |
peerShareId | string | yes | ShareId |
Field | Type | Required | Description |
---|---|---|---|
action | string | yes | Fixed value, "income" |
data | dict | yes |
Field | Type | Required | Description |
---|---|---|---|
peeraddr | string | yes | IP:Port |
peerShareId | string | yes | ShareId |