Skip to content

Latest commit

 

History

History
79 lines (54 loc) · 2.28 KB

README.md

File metadata and controls

79 lines (54 loc) · 2.28 KB

SmartController: Peer-to-peer for creating smartphone controllers

SmartController provides an easy way of turning a smartphone into versatile controller.

Paper now published on arxiv!

How it works

1. Include SmartController

Simply make a new SmartController object on your website. The connection and data will be handled automatically.

2. Display the QRcode

Show a QRcode with the matching controller on your website for smarthphone to connect to. You can use one of the provided controllers or make your own!

3. Control the website

Use the incoming data from phone to interact with PC browser.

Getting started

Dependencies

SmartController uses peerjs to proide peer to peer connection between PC and smartphone browsers. The events are handled by EventEmmiter2 and the qr codes are generated with EasyQRCodeJS

Include the library

install NPM package: npm install smartcontroller

// The usage -
import "smartcontroller";

html file:

```html
<script src="https://unpkg.com/smartcontroller@2.0.0/dist/smartcontroller.min.js"> </script>
```

Create a Peer

const peer = new smartcontroller.SmartController(123456789);
// if id is not specified a randm one will be generated

Create a QRcode
Make a qr code for easy phone connection. All you need is a url where the phone controller is hosted and a div element id. Optionally specify a size and a player id.

peer.createQrCode(
  "https://emmapoliakova.github.io/webpack-test/joystick.html",
  "qrcode",
  150,
  150,
  "1"
);

Listen for events
Once the user connects with smartphone, you can listen for various events and use them to control the PC browser.

// when a new conection is registered log the peer id, screen size and player id if specified
simplePeer.on("connection", function (peer) {
  console.log(peer);
});

// on incoming data log the input provided from smartphone
simplePeer.on("data", function (data) {
  console.log(data);
});

Find the full documentation here.