Apply for Zend Framework Certification Training

NodeJs






Step - 1

const express = require('express')
const app = express()
const http = require('http').createServer(app)
const connect = require("./dbconnect");
const Chat = require("./models/Chat");
const io = require('socket.io')(http)
const PORT = process.env.PORT || 3000

http.listen(PORT, () => {
    console.log(`Listening on port ${PORT}`)
})

app.use(express.static(__dirname + '/public'))

app.get('/', (req, res) => {
    res.sendFile(__dirname + '/index.html')
})

// Socket 
io.on('connection', (socket) => {
    console.log('Connected...')
    socket.on('message', (msg) => {
        socket.broadcast.emit('message', msg)
        console.log(msg);
        connect.then(db => {
            console.log("connected correctly to the server");
            let chatMessage = new Chat({ message:msg.message,sender:msg.loginUser ,receiver:msg.user});
            chatMessage.save();
        });
    })
})

Step -2 Dbconnect.js

const mongoose = require("mongoose");
mongoose.Promise = require("bluebird");
const url = "mongodb://localhost:27017/realchat";
const connect = mongoose.connect(url, { useUnifiedTopology: true ,useNewUrlParser: true});
module.exports = connect;
Step - 3 Chat.js
const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const chatSchema = new Schema(
  {
    message: {
      type: String
    },
    sender: {
      type: String
    },
    receiver: {
      type: String
    }
  },
  {
    timestamps: true
  }
);

let Chat = mongoose.model("theChat", chatSchema);

module.exports = Chat;
Step -5 client.js
const socket = io()
let name;
let textarea = document.querySelector('#textarea')
let messageArea = document.querySelector('.message__area')
let loginUser = 'harish';
do {
    name = prompt('Please enter your name: ')
} while(!name)

textarea.addEventListener('keyup', (e) => {
    if(e.key === 'Enter') {
        sendMessage(e.target.value)
    }
})

function sendMessage(message) {
    let msg = {
        user: name,
        message: message.trim(),
        loginUser:loginUser
    }
    // Append 
    appendMessage(msg, 'outgoing')
    textarea.value = ''
    scrollToBottom()

    // Send to server 
    socket.emit('message', msg)

}

function appendMessage(msg, type) {
    let mainDiv = document.createElement('div')
    let className = type
    mainDiv.classList.add(className, 'message')
    let markup = `

${msg.user}

${msg.message}

` mainDiv.innerHTML = markup messageArea.appendChild(mainDiv) } // Recieve messages socket.on('message', (msg) => { appendMessage(msg, 'incoming') scrollToBottom() }) function scrollToBottom() { messageArea.scrollTop = messageArea.scrollHeight }

< How to add nodemon in nodejs Delete data using id in nodejs mongodb >



Ask a question



  • Question:
    {{questionlistdata.blog_question_description}}
    • Answer:
      {{answer.blog_answer_description  }}
    Replay to Question


Back to Top