0.2.5 • Published 4 years ago

jarvis-controller v0.2.5

Weekly downloads
1
License
MIT
Repository
-
Last release
4 years ago

Jarvis Controller

Jarvis 控制端, 查看演示项目代码

安装

npm install jarvis-controller

使用

import JarvisController from 'jarvis-controller'

const controller = new JarvisController({
  url: 'ws:127.0.0.1:3000',
  secrets: '5r9b4vto246doa9hwk55rr',
  id: 'ipad-1'
})

// 等待连接服务器
await controller.connect()

// 发送操作指令
controller.send('move', '10px')

参数说明:

参数名说明类型必填
urlJarvis 服务器地址stringtrue
secrets服务器设置的密码stringtrue
id控制端的唯一IDstringfalse

发送事件

你可以使用 send 方法发送事件:

controller.send(command, args)
参数名说明类型必填
command指令名称stringtrue
args参数对象number | string | objecttrue

监听事件

你可以使用 on 方法监听系统事件:

controller.on('open', e => {
  console.log('已经连接到控制服务器!')
})

目前支持的事件如下:

事件名说明
open连接到控制服务器
error连接出错
close连接断开
reconnect-fail重连失败

插件

目前仅支持一种插件

TouchPad

此插件为页面提供了一个移动端触控区域, 在控制端的触控区域内, 进行滑动/缩放等, 将会发送对应指令给受控端

import JarvisController, { TouchPad } from 'jarvis-controller'

const touchPadPlugin = new TouchPad({
  selector: '#touchPad', // 触控区域的选择器
  throttle: 100
})

const controller = new JarvisController({
  url: `ws:127.0.0.1:3000`,
  secrets: '5r9b4vto246doa9hwk55rr',
  id: 'ipad-1',
  plugins: [touchPadPlugin]
})

controller.connect()
参数名说明类型必填
selector触控区域的选择器名称('#id')stringtrue
throttlethrottle wait 时长(default: 0)numberfalse

向受控端发送的事件及参数详情:

singletap | doubletap

参数名说明类型
type'singletap'单击 | 'doubletap'双击string
x单击坐标在 x 轴方向占容器的百分比, 范围 0-1number
y单击坐标在 y 轴方向占容器的百分比, 范围 0-1number

pan

参数名说明类型
type'pan'平移string
additionalEvent详细分类'panleft' | 'panright' | 'panup' | 'panup'string
deltaX在 x 轴方向移动的偏移量number
deltaY在 y 轴方向移动的偏移量number
eventType参考下方number

rotate

参数名说明类型
type'rotate'包含旋转和缩放string
scale缩放倍数number
rotation旋转的角度(deg)number
angle移动的角度number
center中心点坐标的百分比值 { x, y }object
eventType参考下方number

eventType

名称
INPUT_START1
INPUT_MOVE2
INPUT_END4
INPUT_CANCEL8

自定义插件

我们允许自定义控制端插件, 参考写法如下:

// 自定义插件 HelloWord
class HelloWord {
  constructor({ selector }) {
    this.container = document.querySelector(selector)
  }
  // init方法会接收controller, 用来发送指令
  init(controller): void {
    this.controller = controller
    this.container.addEventListener('click', () => {
      this.controller.send('hello-word')
    })
  }
}
const controller = new JarvisController({
  url: `ws:${location.hostname}:3000`,
  secrets: '5r9b4vto246doa9hwk55rr',
  id: 'ipad-1',
  plugins: [helloWorld]
})

controller.connect()

心跳检测

服务端每隔 10s 会向控制端发送 ping 事件, 控制端返回 pong, 若检测到断开连接, 则每隔 10s 尝试重连一次, 连续三次重连失败, 控制端会发送 reconnect-fail 事件给页面, 后续逻辑需要监听事件自行处理

controller.on('reconnect-fail', () => {
  console.log('controller跟server断开连接, 并尝试重连失败')
})

其他

服务端和受控端的使用方式, 可查阅下方文档

Jarvis 服务端地址

Jarvis 受控端地址

Jarvis 演示项目代码地址

0.2.5

4 years ago

0.2.3

4 years ago

0.2.4

4 years ago

0.2.0

4 years ago

0.2.2

4 years ago

0.1.0

4 years ago

0.0.5

4 years ago

0.0.3

4 years ago

0.0.4

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago