gasjs

0.1.2 • Public • Published

GAS javascript

TODOs

  • [x] GAS基本逻辑
  • [ ] 重连机制
  • [ ] API优化

服务端与客户端通信逻辑

消息

消息结构定义:

// 客户端发送
{
  "type": "normal/broadcast", // 普通/广播
  "event": "some.event.type", // 事件类型
  "data": { // 事件数据
    ...
  }
}
// 服务端下发
{
  "event": "some.event.type",
  "data": {
    ...
  }
}

游戏端发送的消息

进入房间
{
  "type": "normal",
  "event": "entry",
  "data": {
    "channelId": "the channel id", // 房间id
    "userId": "the user id", // uneed用户id
    "token": "the token", // 请求创建房间时下发的token,用于GAS验证
  }
}
准备开始
{
  "type": "normal",
  "event": "player.prepare",
}
游戏结束
{
  "type": "normal",
  "event": "game.end"
}
转发与定向转发
{
  "type": "broadcast",
  "event": "some.game.event",
  "players": [...] // 若无此项则转发到除我之外,若有此项则定向转发
}

服务端发送的消息

进入房间成功
{
  "event": "entry",
  "data": {
    "players": [...] // 其他玩家
  }
}
广播玩家进入房间
{
  "event": "player.entry",
  "data": {
    "playerId": "the player id"
  }
}
广播游戏开始
{
  "event": "game.start"
}
广播游戏结束
{
  "event": "game.end",
  "data": {
    ... //游戏结果
  }
}

除此之外,服务端帮助转发或定向转其他自定义的游戏消息

Usage

import GAS from 'gasjs';

var gas = new GAS.Client();

gas
.configure({
  uri: 'ws://gas.uneed.com/',
  playerId: 'your uneed id',
  channelId: 'game0001_room0001',
  token: 'your token'
})
.startup({
  onPlayerEntry: (player) => {},
  onGameStart: () => {},
  onGameEnd: (data) => {},
  onGameMessage: (data) => {},
  onError: (data) => {}
});

// 广播所有玩家
gas.broadcast('your.game.event', data);

// 定向广播
var playerIds = [...];
gas.broadcast('your.game.event', playerIds, data);

Contribute

Requirements

  • node 6.x LTS
  • yarn package manager
  • webpack and webpack-dev-server

Step

  1. Clone this project and entry javascript path: cd gas/js
  2. Install dependencies: yarn install
  3. yarn run dev

The End

Readme

Keywords

none

Package Sidebar

Install

npm i gasjs

Weekly Downloads

0

Version

0.1.2

License

MIT

Last publish

Collaborators

  • uneed