https://github.com/udamir/magx-client
JavaScript Client for MagX server
https://github.com/udamir/magx-client
js-client magx
Last synced: 3 months ago
JSON representation
JavaScript Client for MagX server
- Host: GitHub
- URL: https://github.com/udamir/magx-client
- Owner: udamir
- License: mit
- Created: 2020-08-29T08:09:57.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-06-30T08:35:11.000Z (over 4 years ago)
- Last Synced: 2025-03-04T01:42:31.604Z (10 months ago)
- Topics: js-client, magx
- Language: TypeScript
- Homepage:
- Size: 177 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Magx JS client

JavaScript/TypeScript Client for MagX multiplayer game server.
## Installation
### Installing the module
```
npm install --save magx-client
```
and include it to your project
```ts
import { Client } from "magx-client"
```
### CDN link
```html
```
or you can include magx-client package to server dependencies and use it on client:
```html
```
## Usage
### Connecting to server
```js
var client = new MagX.Client({ address: "localhost", port: 3001, secure: true })
// Authenticate
await client.authenticate({ login, password })
// or verify your session
await client.verify(token)
// Get avaliable rooms
const rooms = await client.getRooms("lobby")
// create new room
const room = await client.createRoom(name, params)
// or join to existing room
const room = await client.joinRoom(roomId, params)
// or reconnect to room
const room = await client.reconnect(roomId)
```
### Handle room events
```js
// new room state
room.onSnapshot((state) => {
console.log("initial room state:", state)
})
// listen to patches coming from the server
room.onPatch((patch) => {
// this signal is triggered on each patch
console.log("room state patch:", patch)
})
// listen to messages coming from the server
room.onMessage("move", (data) => {
// this signal is triggered on each "move" message
console.log("new move message:", data)
})
// listen to specified state changes
room.onChange("replace", "object/:id/*", (patch, { id }) => updateObject(id, patch))
// short alias for onChange event
room.onAdd("players/:id", (patch, { id }) => addPlayer(id, patch.value)
room.onRemove("players/:id", (patch, { id }) => removePlayer(id))
room.onReplace("players/:id/:prop", (patch, { id, prop }) => updatePlayer(id, prop, patch.value))
// server error occurred
room.onError((code, message) => {
console.log("error", code, message);
})
// client left the room
room.onLeave(() => {
console.log(client.id, "left");
})
```
### Use room methods
```js
// send message
room.send(type, data)
// leave room
room.leave()
// close room
room.close() {
// update room params
room.update(update)
```
## Examples
The easiest way to try out magx-client is using the magx-example:
```
git clone https://github.com/udamir/magx-examples.git
cd magx-examples
npm install
```
To run the MagX server, run ```npm start```
# License
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fudamir%2Fmagx-client?ref=badge_large)