const { Block } = require('./db/models') //const chalk = require('chalk') const { types } = require('@joystream/types') const { ApiPromise, WsProvider } = require('@polkadot/api') const wsLocation = [ 'wss://localhost:9933', 'wss://rome-rpc-endpoint.joystream.org:9944', ] // TODO migrate lib: const { addBlock } = require('./joystream') module.exports = (io) => { const initializeSocket = async () => { console.debug(`[Joystream] Connecting to ${wsLocation}`) try { const provider = new WsProvider(wsLocation) const api = await ApiPromise.create({ provider, types }) await api.isReady console.debug(`[Joystream] Connected.`) let status = {} api.derive.chain.subscribeNewHeads( async (h) => {} //(status = (await addBlock(api, h, io, status)) || status) ) } catch (e) { return console.log(`[Joystream] Connection failed`) } } io.on('connection', async (socket) => { console.log(chalk.green(`[socket.io] Connection: ${socket.id}`)) socket.on('get blocks', async (limit) => { const blocks = await Block.findAll({ limit, order: [['id', 'DESC']] }) socket.emit('blocks', blocks) }) socket.on('disconnect', async () => { console.log(chalk.red(`[socket.io] Disconnect: ${socket.id}`)) }) }) const connectUpstream = () => { try { initializeSocket() } catch (e) { console.log(`[Joystream] upstream connection failed`, e) //setTimeout(connectUpstream, 1000) } } //connectUpstream() initializeSocket() }