Web client for üWave.
Dependencies - Setup - Building - Server API - Client API - License
For running in the browser: something modern. The aim is to support ~IE10+ and other modern browsers (recent Chromes and Firefoxes, at least). If you use something reasonably recent and üWave doesn't work, file a bug!
For development: Node versions >=4 and NPM 3.x.
Some üWave components aren't yet published to NPM, so you have to do a bit of manual setup.
First, clone the u-wave-core and u-wave-api-v1 repositories. In both
directories, run npm link
:
cd ./u-wave-core
npm link
cd ../u-wave-api-v1
npm link
The npm link
command will create a symlink to the module in the global modules
folder. Now, you can create symlinks to the global modules folder inside the
u-wave-web
folder:
cd ../u-wave-web
npm link u-wave-core u-wave-api-v1
# and install web client dependencies:
npm install
…and now you should be good to go!
There are two main build scripts: one for development, and one for production.
The development script runs a local üWave server and auto-reloads the web client when you make changes.
npm start # or `npm run dev`
When building the üWave web client for use on a server, the production build should be used instead. It removes costly debugging helpers from the code and minifies everything as much as possible.
npm run prod
The prod
script doesn't run a local server. To try out your production build,
you can use the standalone serve
script:
npm run serve
import createWebClient from 'u-wave-web/middleware';
Create a Web client middleware for use with express-style server libraries.
Parameters
uw
- a üWave Core object.options
- Client options. See the Client API section.
Example
This is a small example üWave server on top of Express, using ReCaptcha and EmojiOne emoji from u-wave-web-emojione.
import express from 'express';
import uwave from 'u-wave-core';
import createWebApi from 'u-wave-api-v1';
import createWebClient from 'u-wave-web/middleware';
import emojione from 'u-wave-web-emojione';
const app = express();
const uw = uwave({ /* Options. See the u-wave-core documentation. */ });
app.listen(80);
app.use('/v1', createWebApi(uw, {
/* Options. See the u-wave-api-v1 documentation. */
}));
app.use('/assets/emoji', emojione.middleware());
app.use('/', createWebClient(uw, {
apiBase: '/v1',
emoji: emojione.emoji,
recaptcha: { key: 'my ReCaptcha site key' },
}));
import Uwave from 'u-wave-web'
Create a new üWave web client.
options
-
options.apiBase
- Base URL to the mount point of the üWave Web API to talk to. Defaults to/v1
, but it's recommended to set this explicitly. -
options.emoji
- An object describing the emoji that will be available in the chat. Keys are emoji shortcodes (without:
), and values are image filenames. -
options.recaptcha
- An object containing ReCaptcha options used to ensure new user registrations are human. This option should only be passed if the Web API middleware is configured to check for ReCaptcha entries.options.recaptcha.key
- ReCaptcha site key. This can be obtained from the "Keys" panel in the ReCaptcha site admin page.
-
Add a media source. Media sources should also be registered with the üWave Core module on the server side.
Parameters
sourceType
- String representing the source type. Must be the same as the one used on the server side.sourcePlugin
- Factory function for the plugin. This factory function will receive two arguments: theUwave
class instance, and the options object passed to.source()
.options
- Options to be passed to the source plugin.
Example
import youTubeSource from 'u-wave-web-youtube';
uw.source('youtube', youTubeSource);
Start the web client and render it into a DOM element.
Parameters
target
- A DOM element.
Example
uw.renderToDOM(document.getElementById('app));
The üWave web client is licensed under the MIT license.
The default mention sound file comes from a Sonics.io pack and is under the Sonics.io License (archive link).