Re: Yelon Chat - Guest Client

From Obese Monkey, 7 Years ago, written in JavaScript, viewed 779 times. This paste is a reply to Yelon Chat - Guest Client from Crys - go back
URL https://paste.godclan.hu/view/uV5yTUg6/diff Embed
Viewing differences between Yelon Chat - Guest Client and Re: Yelon Chat - Guest Client
var readline = require('readline');
var io = require('socket.io-client');
var fs = require('fs');
var colors = require('colors');
var dateFormat = require('dateformat');

var rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
    terminal: false
});
process.stdin.setRawMode(true);
readline.emitKeypressEvents(process.stdin);
var socket = io("http://192.168.2.188:3000");
var uID;
var sessionID;
var token;
var typingTimer;
var typing = false;

socket.on('connect', function () {
    console.log("Connected.");
    fs.readFile('token', function (err, data) {
        if (!err) {
            token = data.toString();
            console.log("Sending token: %s".yellow, token);
            socket.emit("token:validate", token);
        }
        else {
            console.log("Requesting token...".yellow)
            socket.emit("token:generate");
        }
    });
});

socket.on('disconnect', function () {
    console.log("Disconnected.".red);
    if (token) {
        console.log("Saving token...".yellow);
        fs.writeFile('token', token, function (err) {
            console.log("Token saved, exiting...".green);
            process.exit();
        });
    }
    else {
        console.log("Exiting...".red);
        process.exit();
    }
})

socket.on('token:validated', function (data) {
    console.log("Token validated!".green);
    console.log("User ID: ", data.id);
    uID = data.id;
});

socket.on('token:generated', function (data) {
    console.log("Token generated: %s".green, data.token);
    console.log("User ID: ", data.id);
    token = data.token;
    uID = data.id;
});

socket.on('chat:start', function (data) {
    sessionID = data.session_id;
    console.log("Chat started!".green);
    console.log("  session id: %s", sessionID);
    if (data.messages.length > 0) {
        data.messages.forEach(function (data) {
            console.log("[%s] %s: %s", data.time, data.client.id === uID ? "You".cyan : "Operator".green, data.message);
        });
    }
});

socket.on('chat:end', function (data) {
    console.log("Chat ended!".red);
    console.log("  session id: %s", sessionID);
    socket.emit('chat:rating', sessionID, 4);
});

socket.on('chat:archive', function (data) {
    console.log("Chat archived!".green);
    console.log("  session id: %s", sessionID);
    sessionID = undefined;
});

socket.on('chat:message', function (data) {
    console.log("[%s] %s: %s", data.time, data.client.id === uID ? "You".cyan : "Operator".green, data.message);
});

socket.on('chat:typing', function (data) {
    if (data.client.id !== uID) {
        console.log("[%s] Operator %s typing.", (new Date).toISOString(), data.typing ? "started" : "stopped");
    }
});

rl.on('line', function (line) {
    if (sessionID) {
        /*console.log("Sending message: %s", line);
        console.log("  session id: %s", sessionID);*/
        socket.emit("chat:message", sessionID, line);
    }
    else {
        //console.log("Starting new chat with message: %s", line);
        socket.emit("chat:create", line);
    }
});

process.stdin.on('keypress', function (str, key) {
    if (key && key.ctrl && key.name === 'c') {
        process.emit('SIGINT');
    }
    else if (str !== undefined) {
        process.stdout.write(str);
        if (sessionID) {
            if (!typing) {
                typing = true;
                socket.emit("chat:typing", sessionID, true);
            }
            clearTimeout(typingTimer);
            typingTimer = setTimeout(function () {
                socket.emit("chat:typing", sessionID, false);
                typing = false;
            }, 1000);
        }
    }
});

process.on('SIGINT', function () {
    socket.emit("chat:typing", sessionID, false);
    socket.disconnect();
});

socket.connect();

Reply to "Re: Yelon Chat - Guest Client"

Here you can reply to the paste above