Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

View hugomd's full-sized avatar
:bowtie:

Hugo hugomd

:bowtie:
View GitHub Profile
const util = require("util");
const readline = require("readline");
const { JSDOM } = require("jsdom");
const { ChatManager, TokenProvider } = require("@pusher/chatkit");
const axios = require("axios");
const prompt = require("prompt");
+const ora = require('ora');
const main = async () => {
+ const spinner = ora();
...
console.log(`Joined ${room.name} successfully`);
+ const input = readline.createInterface({input: process.stdin});
+ input.on('line', async text => {
+ await currentUser.sendMessage({roomId: room.id, text});
+ }
const { ChatManager, TokenProvider } = require('@pusher/chatkit')
const { JSDOM } = require('jsdom')
const util = require('util')
const prompt = require('prompt')
const axios = require('axios')
+ const readline = require('readline')
...
const room = availableRooms[chosenRoom]
+ await currentUser.subscribeToRoom({
+ roomId: room.id,
+ hooks: {
+ onNewMessage: message => {
+ const { senderId, text } = message
+ if (senderId === username) return
availableRooms.forEach((room, index) => {
console.log(`${index} - ${room.name}`)
})
+ const roomSchema = [
+ {
+ description: 'Select a room',
+ name: 'room',
+ conform: v => {
+ if (v >= availableRooms.length) {
...
const currentUser = await chatManager.connect();
+ const joinableRooms = await currentUser.getJoinableRooms();
+ const availableRooms = [...currentUser.rooms, ...joinableRooms];
+ console.log('Available rooms:');
+ availableRooms.forEach((room, index) => {
+ console.log(`${index} - ${room.name}`);
await createuser(username);
+ const chatManager = new ChatManager({
+ instanceLocator: 'YOUR_INSTANCE_LOCATOR',
+ userId: username,
+ tokenProvider: new TokenProvider({url: 'http://localhost:3001/authenticate'}),
+ });
+ const currentUser = await chatManager.connect();
const main = async () => {
try {
// Initialise prompt with an empty message
prompt.start();
prompt.message = '';
// Turn prompt.get() into a promise
const get = util.promisify(prompt.get);
// Create a schema to validate user input
+ const createUser = async username => {
+ try {
+ await axios.post('http://localhost:3001/users', {username});
+ } catch ({message}) {
+ throw new Error(`Failed to create a user, ${message}`);
+ }
+ };
const main = async () => {
...
const { ChatManager, TokenProvider } = require('@pusher/chatkit')
const { JSDOM } = require('jsdom')
const util = require('util')
const prompt = require('prompt')
+ const axios = require('axios')
...