simple-room
v3.1.3
Published
## Server
Downloads
449
Readme
How use it ?
Server
- Create just a class :
class Page {
}
- Add this room in World:
import { World } from './world'
World.transport(io) // io is socket.io variable
const room = Word.addRoom('room_id', new Page())
- Send packets to client:
setInterval(() => {
World.send()
}, 20)
Client
With socket.io
<script src="sync-client.js"></script>
const socket = io()
socket.emit(':join', 'room_id')
World.listen(socket).value.subscribe((val: { data: any, partial: any }) => {
console.log(val)
})
Add Room Properties:
class Page {
$schema = {
title: String
}
title = ''
}
After adding the room, if you change the property, it will be transmitted to everyone.
const room = Word.addRoom('room_id', Page)
room.title = 'my app' // is send to users in room
Define Schema
Normal Schema
Typescript
@Schema({
title: String
})
export class Page {
title: string = ''
}
Javascript
export class Page {
$schema = {
title: String
}
title = ''
}
Array Properties
Typescript
@Schema({
list: [String]
})
export class Page {
title: string[] = ['yo']
}
Javascript
export class Page {
$schema = {
list: [String]
}
title = ['yo']
}
with collection :
Typescript
@Schema({
list: [{ id: Number, name: String }]
})
export class Page {
list: { id: Number, name: String }[] = []
constructor() {
this.list.push({
id: 1,
name: 'yo'
})
}
}
Javascript
export class Page {
$schema = {
list: [{ id: Number, name: String }]
}
list = []
constructor() {
this.list.push({
id: 1,
name: 'yo'
})
}
}
Object generic key
Typescript
@Schema({
list: [{ id: Number }]
})
export class Page {
list: any = {}
constructor() {
this.list['mykey'] = {
id: 1
}
}
}
Javascript
export class Page {
$schema = {
list: [{ id: Number }]
}
list = {}
constructor() {
this.list['mykey'] = {
id: 1
}
}
}