Comprehensive WebSocket API reference for interacting with Rust+ servers.
// Get list of all paired servers
websocket.send(JSON.stringify({
"type": "get_servers"
}));
Returns list of all paired servers with their status and smart devices.
Response:
{
"type": "servers_list",
"data": {
"servers": {
"943118f4-9988-7ddb-9fa1-d38d212fac16": {
"name": "HopHop Build server | Main",
"ip": "186.105.34.106",
"port": "28082",
"status": "connected",
"switches": [
{
"entityId": "5774913",
"entityName": "Smart Switch",
"entityType": "switch"
}
],
"alarms": [
{
"entityId": "5774912",
"entityName": "Smart Alarm",
"entityType": "alarm"
}
]
}
}
}
}
// Get live server information
websocket.send(JSON.stringify({
"type": "get_server_info",
"serverId": "your-server-id"
}));
Returns live server information (population, time, etc.).
Response:
{
"type": "server_info",
"data": {
"name": "HopHop Build server | Main",
"ip": "186.105.34.106",
"port": "28082",
"population": 0,
"maxPopulation": 100,
"time": "12:34:56",
"sunrise": "06:00:00",
"sunset": "18:00:00"
}
}
// Get map image and markers
websocket.send(JSON.stringify({
"type": "get_map_data",
"serverId": "your-server-id"
}));
Returns map image and marker data.
Response:
{
"type": "map_data",
"data": {
"map": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAX/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABmX/9k=",
"size": 1024,
"timestamp": 1640995200,
"oceanMargin": 500,
"monuments": [
{
"token": "harbor_display_name",
"x": 3690.75,
"y": 3907.10
},
{
"token": "airfield_display_name",
"x": 2843.70,
"y": 3174.95
},
{
"token": "outpost",
"x": 2929.23,
"y": 622.80
}
],
"markers": {
"markers": [
{
"id": 563890193,
"type": "VendingMachine",
"x": 2958.51,
"y": 640.64,
"name": "Vendor Farming",
"sellOrders": [
{
"itemId": -1488398114,
"quantity": 1,
"currencyId": -932201673,
"costPerItem": 30,
"amountInStock": 10
}
]
}
]
},
"background": "#0B3B4A"
}
}
// Toggle a smart switch
websocket.send(JSON.stringify({
"type": "toggle_switch",
"serverId": "your-server-id",
"entityId": "entity-id"
}));
Toggles a smart switch on/off.
Response:
{
"type": "switch_toggled",
"data": {
"entityId": "entity-id",
"newState": true,
"message": "Switch turned on successfully"
}
}
// Send team chat message
websocket.send(JSON.stringify({
"type": "send_team_message",
"serverId": "your-server-id",
"message": "Hello team!"
}));
Sends a message to team chat.
Response:
{
"type": "team_message_sent",
"data": {
"serverId": "df9525f2-4489-b8d9-ff19-b85296ddb39f",
"message": "Test message from Rust+ Provider at 2025-10-14T00:24:22.499Z",
"success": true
}
}
// Get team information
websocket.send(JSON.stringify({
"type": "get_team_info",
"serverId": "your-server-id"
}));
Returns team members, leader, and notes.
Response:
{
"type": "team_info",
"data": {
"serverId": "df9525f2-4489-b8d9-ff19-b85296ddb39f",
"teamInfo": {
"seq": 2,
"teamInfo": {
"leaderSteamId": "76561198056409776",
"members": [
{
"steamId": "76561198056409776",
"name": "nerif.tafu",
"x": 548.399658203125,
"y": 3884.44482421875,
"isOnline": true,
"spawnTime": 1760374002,
"isAlive": true,
"deathTime": 1760108753
}
],
"mapNotes": [
{
"x": 907.8348388671875,
"y": 3588.74658203125
}
]
}
}
}
}
// Get entity status
websocket.send(JSON.stringify({
"type": "get_entity_info",
"serverId": "your-server-id",
"entityId": "entity-id"
}));
Returns current status of a smart device.
Response:
{
"type": "entity_info",
"data": {
"entityId": "entity-id",
"isActive": true,
"available": true,
"lastChecked": "2025-01-13T12:34:56.789Z"
}
}
// Listen for team chat messages
websocket.onmessage = function(event) {
const message = JSON.parse(event.data);
if (message.type === 'team_message') {
console.log(message.data);
}
};
Receives team chat messages from connected servers.
Console Output:
{
"playerName": "nerif.tafu",
"message": "Testing 123",
"timestamp": 1760386074,
"serverName": "HopHop Build server | Main"
}
// Listen for entity state changes
websocket.onmessage = function(event) {
const message = JSON.parse(event.data);
if (message.type === 'entity_changed') {
console.log(message.data);
}
};
Receives notifications when smart switches or alarms change state.
Console Output:
{
"entityId": "6141035",
"entityName": "Smart Switch",
"isActive": true,
"serverName": "HopHop Build server | Main"
}
// Listen for server connection changes
websocket.onmessage = function(event) {
const message = JSON.parse(event.data);
if (message.type === 'server_connected') {
console.log(message.data);
} else if (message.type === 'server_disconnected') {
console.log(message.data);
}
};
Receives notifications when servers connect or disconnect.
Console Output:
// Server Connected
{
"serverId": "df9525f2-4489-b8d9-ff19-b85296ddb39f",
"serverName": "HopHop Build server | Main"
}
// Server Disconnected
{
"serverId": "df9525f2-4489-b8d9-ff19-b85296ddb39f",
"serverName": "HopHop Build server | Main"
}
// Server Connecting
{
"serverId": "df9525f2-4489-b8d9-ff19-b85296ddb39f",
"serverName": "HopHop Build server | Main"
}
// Server Error
{
"serverId": "df9525f2-4489-b8d9-ff19-b85296ddb39f",
"serverName": "HopHop Build server | Main",
"error": "Connection timeout"
}
// Listen for all live events
websocket.onmessage = function(event) {
const message = JSON.parse(event.data);
if (message.type === 'live_event') {
console.log(message.data);
}
};
Receives all live events including entity changes, server events, and team chat.
Console Output:
// Entity State Changes
{
"type": "Entity Change",
"message": "Entity 6141035 is now ACTIVE on HopHop Build server | Main",
"timestamp": "2025-10-14T00:48:11.117Z"
}
// Team Chat Messages
{
"type": "Team Chat",
"message": "nerif.tafu: Testing 123",
"timestamp": "2025-10-14T00:48:11.117Z"
}
// Server Connection Events
{
"type": "Server Connected",
"message": "Server df9525f2-4489-b8d9-ff19-b85296ddb39f connected successfully",
"timestamp": "2025-10-14T00:48:11.117Z"
}
// Entity Management
{
"type": "Entity Paired",
"message": "Smart Switch paired successfully",
"timestamp": "2025-10-14T00:48:11.117Z"
}
{
"type": "Entity Renamed",
"message": "Entity 6141035 renamed to 'Main Door Switch'",
"timestamp": "2025-10-14T00:48:11.117Z"
}
{
"type": "Entity Deleted",
"message": "Entity 6141035 deleted successfully",
"timestamp": "2025-10-14T00:48:11.117Z"
}
// FCM Registration
{
"type": "FCM Registration",
"message": "FCM tokens registered successfully",
"timestamp": "2025-10-14T00:48:11.117Z"
}
// Server Data Updates
{
"type": "Map Markers",
"message": "Map markers updated for server",
"timestamp": "2025-10-14T00:48:11.117Z"
}
{
"type": "Team Info",
"message": "Team information updated for server",
"timestamp": "2025-10-14T00:48:11.117Z"
}
{
"type": "Server Info",
"message": "Server information updated for server",
"timestamp": "2025-10-14T00:48:11.117Z"
}