UNPKG

raptor-client

Version:

A transport-agnostic RPC client that follows the JSON-RPC 2.0 spec. Works in the browser and on the server.

46 lines (34 loc) 886 B
var Client = require('./client') var debug = require('debug')('raptor:client') module.exports = function (url, WebSocket) { debug('Creating new client with url ' + url) var ws = new WebSocket(url) var ready = new Promise(function (resolve) { ws.addEventListener('open', resolve) }) var sendMessage = function (req) { return ready.then(function () { debug('Sending message') ws.send(JSON.stringify(req)) }) } var client = new Client(sendMessage) ws.addEventListener('message', function (event) { var err, obj debug('Received message') try { obj = JSON.parse(event.data) } catch (_err) { err = _err } if (err) { client.emit('error', err) } else { client.handleMessage(obj) } }) ws.addEventListener('error', function (err) { client.emit('error', err) }) return client }