rsc-data-server
manage rsc-server worlds, player storage, friend communication, etc. jagex refered to theirs as the loginserver. this server uses JSON to communicate with rsc-server over TCP or UNIX file sockets for IPC.
install
# npm install @2003scape/rsc-data-server # -g for the CLI program
usage
const Server = ;const fs = promises; async { const config = JSON; const server = config; await server;};
cli usage
$ rsc-data-server -c /etc/rsc-data-server/config.json
configuration
"sockFile": "/tmp/rsc-data-server.sock" // unix IPC socket files "port": 8001 // optional TCP port "sqliteFile": "./rsc-data-server.sqlite" // default is "test" "password": "$2y$10$wufvP1CJMLYmBHKl2Ah2k.CGQwQV5aUMIcXrPNUfmqJ9ibNhhvFnS" "passwordHashRounds": 12 "recoveryHashRounds": 15 "playersPerIp": 1
handlers
rsc-data-server responds to JSON messages with the .handler
property set to
the following:
authenticate
authenticate rsc-server or rsc-www instance to allow the rest of the handlers to be used.
handler; 'authenticate' password: 'test'
returns:
success: true // or false error: '' // if success false
worldConnect
initialize an rsc-server for players to login to.
handler; 'worldConnect' id: 1 // 1-254 tcpPort: 43594 websocketPort: 43595 members: false // or true country: 'CAN' // ISO 3166-1 alpha-3
returns:
success: true // or false error: '' // if success false
worldDisconnect
disconnect an rsc-server instance. happens automatically if the connection is dropped.
handler: 'worldDisconnect'
worldGetList
get a list of worlds.
returns:
id: 1 members: false country: 'CAN' online: true players: 0 // to 1250
playerCount
the total number of registered players.
handler: 'playerCount'
playerOnlineCount
the number of players online in each world.
handler: 'playerOnlineCount'
playerRegister
handler: 'playerRegister' username: '' password: '' ip: ''
returns:
success: true // or false code: 0 // used in the client to display error message or indicate success
playerLogin
checks if a player's credentials are correct and if they're allowed onto the world they're logging into (membership check).
handler: 'playerLogin' username: '' password: '' ip: ''
returns:
success: true // or false code: 0 // similar to registration code player: id: 1 bank: id: 10 amount: 1000 inventory: id: 10 amount: 1000 skills: attack: current: 1 experience: 332 // etc. // undefined if invalid credentials
playerMessage
send a message to a player on another world.
handler: 'playerMessage' fromUsername: '' toUsername: '' message: ''
returns:
success: true // or false error: '' // if success false
senders
rsc-data-server sends these to certain (or all) clients with the each header
corresponding to the .handler
property:
playerLogin
sent to rsc-server instances when players login.
handler: 'playerLoggedIn' username: '' world: 1 // up to 254
playerMessage
sent to the rsc-server instance corresponding to the the world toUsername
resides in the playerMessage
handler.
handler: 'playerMessage' fromUsername: '' toUsername: '' message: ''
license
Copyright (C) 2020 2003Scape Team
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.