https://github.com/2003scape/rsc-socket
🔌 encode/decode runescape classic packets
https://github.com/2003scape/rsc-socket
game-networking mmorpg network packet packets protocol rsc rsps runescape socket
Last synced: 3 months ago
JSON representation
🔌 encode/decode runescape classic packets
- Host: GitHub
- URL: https://github.com/2003scape/rsc-socket
- Owner: 2003scape
- License: agpl-3.0
- Created: 2020-10-07T16:45:24.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-12-15T00:05:14.000Z (over 4 years ago)
- Last Synced: 2025-02-06T19:17:03.013Z (4 months ago)
- Topics: game-networking, mmorpg, network, packet, packets, protocol, rsc, rsps, runescape, socket
- Language: JavaScript
- Homepage:
- Size: 44.9 KB
- Stars: 6
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
# rsc-socket
encode/decode runescape classic packets. designed to wrap
node [Socket](https://nodejs.org/api/net.html#net_class_net_socket) or
WebSocket ([client](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket)
or [server](https://www.npmjs.com/package/ws)), similar to how
[json-socket](https://www.npmjs.com/package/json-socket) works.this module handles encoding/decoding of usernames and chat messages as well,
converting everything to native types.## install
$ npm install @2003scape/rsc-socket
## example
```javascript
const RSCSocket = require('./src');
const net = require('net');net.createServer((socket) => {
socket = new RSCSocket(socket, true);
socket.on('error', (err) => console.error(err));socket.on('message', (message) => {
console.log('packet recevied', message);if (message.type === 'login') {
socket.sendMessage({
type: 'worldInfo',
index: 0,
planeWidth: 2304,
planeHeight: 1776,
planeIndex: 0
});
}
});
}).listen(43594);
```## api
### socket = new RSCSocket(net.Socket || WebSocket, isServer = true)
create a new socket wrapper instance.### socket.send(data)
send a raw data buffer (used in login process).### socket.sendMessage(message)
send a POJO from to be encoded and written to the socket.### socket.getIPAddress()
return the IPv4 address as a string.### socket.close()
terminate or destroy the socket.### socket.on('message', (message) => {})
received a decoded packet POJO.## license
Copyright 2020 2003Scape TeamThis 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/.