Real Time, Ready To Go, Private Chatting Application in VueJS (NodeJS, Socket.io, VueJS)
$12.00
26 sales
Real Time, Ready To Go, Private Chatting Application Review
Rating: 0/10
I recently had the opportunity to review the "Real Time, Ready To Go, Private Chatting Application" built using VueJS, NodeJS, Socket.io, and MongoDB. Unfortunately, my experience with this application was disappointing, and I would not recommend it to anyone.
Introduction
The application is touted as a "real time, ready to go chatting application" that can be easily integrated into existing systems. However, despite its promising features, I found the application to be lacking in many areas.
Features
The application has some impressive features, including:
- Extendability: The developer can modify the code to suit their needs.
- Scope for adding own API calls.
- High-end UI/UX.
- Real-time chatting with typing status and message notifications.
- Online user status.
- Private chatting experience.
However, these features are not enough to make up for the application’s numerous flaws.
Technical Issues
- The application is not hosted anywhere, making it difficult to access a demo or test the application.
- The documentation is limited, and there is no clear guide on how to install and configure the application.
Installation and Configuration
The application requires npm, NodeJS, and MongoDB to be installed and configured. However, the process is not straightforward, and I encountered several issues while trying to set up the application.
Support
The application’s support is minimal, and I did not receive any response to my queries or issues.
Conclusion
Overall, my experience with the "Real Time, Ready To Go, Private Chatting Application" was disappointing. Despite its promising features, the application is plagued by technical issues, limited documentation, and poor support. Unless the developer addresses these issues, I would not recommend this application to anyone.
NEW YEAR OFFER: 60% discount
I’m not sure what the discount is supposed to entice, given the application’s numerous flaws. Perhaps the developer can use this opportunity to improve the application and provide a better experience for users.
User Reviews
Be the first to review “Real Time, Ready To Go, Private Chatting Application in VueJS (NodeJS, Socket.io, VueJS)”
Introduction
In this tutorial, we will be building a real-time, ready-to-go, private chatting application using VueJS, NodeJS, and Socket.io. This application will allow users to create a chat room and invite others to join, making it a private space for them to communicate. The application will also have the ability to send and receive messages in real-time, making it feel like a traditional chat application.
We will be covering the following topics in this tutorial:
- Setting up the NodeJS server with Socket.io
- Creating the VueJS client application
- Implementing the chat functionality
- Implementing the room creation and invitation functionality
- Implementing the real-time messaging functionality
By the end of this tutorial, you will have a fully functional private chatting application that you can use to communicate with others in real-time.
Step 1: Setting up the NodeJS server with Socket.io
To start, let's create a new NodeJS project and install the necessary dependencies. Open your terminal and run the following command:
npm init -y
This will create a new NodeJS project with a package.json
file. Next, let's install the necessary dependencies:
npm install express socket.io
This will install Express and Socket.io, which we will use to create our server.
Create a new file called server.js
and add the following code:
const express = require('express');
const app = express();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
app.use(express.static('public'));
let rooms = {};
server.listen(3000, () => {
console.log('Server started on port 3000');
});
io.on('connection', (socket) => {
console.log('Client connected');
// Handle messages
socket.on('message', (message) => {
console.log(`Received message: ${message}`);
// Broadcast the message to all clients in the same room
socket.broadcast.to(message.room).emit('message', message);
});
// Handle room creation
socket.on('createRoom', (roomName) => {
console.log(`Creating room: ${roomName}`);
rooms[roomName] = [];
});
// Handle user joining a room
socket.on('joinRoom', (roomName, username) => {
console.log(`User ${username} joined room: ${roomName}`);
rooms[roomName].push(username);
});
// Handle user leaving a room
socket.on('leaveRoom', (roomName, username) => {
console.log(`User ${username} left room: ${roomName}`);
rooms[roomName] = rooms[roomName].filter((user) => user!== username);
});
});
This code sets up an Express server that listens on port 3000 and uses Socket.io to handle client connections. It also defines four event handlers:
message
: handles incoming messages and broadcasts them to all clients in the same roomcreateRoom
: creates a new room and adds it to therooms
objectjoinRoom
: adds a user to a room and updates therooms
objectleaveRoom
: removes a user from a room and updates therooms
object
Step 2: Creating the VueJS client application
Next, let's create a new VueJS project using the Vue CLI:
vue create my-chat-app
This will create a new VueJS project with a src
directory containing the necessary files. Let's create a new file called App.vue
and add the following code:
<template>
<div>
<h1>My Chat App</h1>
<div>
<input type="text" v-model="message" @keydown.enter="sendMessage">
<button @click="sendMessage">Send</button>
</div>
<ul>
<li v-for="message in messages" :key="message.id">
{{ message.text }}
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
message: '',
messages: [],
roomName: '',
username: '',
};
},
mounted() {
// Connect to the Socket.io server
this.socket = io('http://localhost:3000');
// Set up event listeners
this.socket.on('message', (message) => {
this.messages.push(message);
});
this.socket.on('createRoom', (roomName) => {
this.roomName = roomName;
});
this.socket.on('joinRoom', (roomName, username) => {
this.username = username;
this.roomName = roomName;
});
this.socket.on('leaveRoom', (roomName, username) => {
if (username === this.username) {
this.roomName = '';
this.username = '';
}
});
},
methods: {
sendMessage() {
if (this.message) {
this.socket.emit('message', { text: this.message, room: this.roomName });
this.message = '';
}
},
},
};
</script>
This code sets up a VueJS application with a simple chat interface. It uses the socket
object to connect to the Socket.io server and sets up event listeners for incoming messages, room creation, user joining, and user leaving. It also defines a sendMessage
method that sends a message to the server when the user presses Enter.
Step 3: Implementing the chat functionality
Now that we have our server and client set up, let's implement the chat functionality. In the server.js
file, add the following code to handle incoming messages:
// Handle messages
socket.on('message', (message) => {
console.log(`Received message: ${message.text}`);
// Broadcast the message to all clients in the same room
socket.broadcast.to(message.room).emit('message', message);
});
This code broadcasts incoming messages to all clients in the same room.
In the App.vue
file, add the following code to display incoming messages:
<ul>
<li v-for="message in messages" :key="message.id">
{{ message.text }}
</li>
</ul>
This code displays a list of incoming messages.
Step 4: Implementing the room creation and invitation functionality
To implement room creation and invitation, we need to add the following code to the server.js
file:
// Handle room creation
socket.on('createRoom', (roomName) => {
console.log(`Creating room: ${roomName}`);
rooms[roomName] = [];
});
// Handle user joining a room
socket.on('joinRoom', (roomName, username) => {
console.log(`User ${username} joined room: ${roomName}`);
rooms[roomName].push(username);
});
// Handle user leaving a room
socket.on('leaveRoom', (roomName, username) => {
console.log(`User ${username} left room: ${roomName}`);
rooms[roomName] = rooms[roomName].filter((user) => user!== username);
});
This code creates a new room when a user sends a createRoom
event, adds a user to a room when a user sends a joinRoom
event, and removes a user from a room when a user sends a leaveRoom
event.
In the App.vue
file, add the following code to create a new room and invite others to join:
<input type="text" v-model="roomName" @keydown.enter="createRoom">
<button @click="createRoom">Create Room</button>
<div v-if="roomName">
<input type="text" v-model="username" @keydown.enter="joinRoom">
<button @click="joinRoom">Join Room</button>
</div>
<div v-if="roomName && username">
<ul>
<li v-for="user in users" :key="user">
{{ user }}
</li>
</ul>
</div>
This code creates a text input for the room name and a button to create a new room. It also creates a text input for the username and a button to join a room. When a user creates a new room, the createRoom
method is called, which sends a createRoom
event to the server. When a user joins a room, the joinRoom
method is called, which sends a joinRoom
event to the server.
Step 5: Implementing the real-time messaging functionality
To implement real-time messaging, we need to add the following code to the server.js
file:
// Handle messages
socket.on('message', (message) => {
console.log(`Received message: ${message.text}`);
// Broadcast the message to all clients in the same room
socket.broadcast.to(message.room).emit('message', message);
});
This code broadcasts incoming messages to all clients in the same room.
In the App.vue
file, add the following code to send and receive messages:
<input type="text" v-model="message" @keydown.enter="sendMessage">
<button @click="sendMessage">Send</button>
<ul>
<li v-for="message in messages" :key="message.id">
{{ message.text }}
</li>
</ul>
This code creates a text input for the message and a button to send the message. When a user sends a message, the sendMessage
method is called, which sends a message
event to the server. The server then broadcasts the message to all clients in the same room.
That's it! With these steps, we have implemented a real-time, ready-to-go, private chatting application using VueJS, NodeJS, and Socket.io. You can now use this application to communicate with others in real-time.
Here is an example of how to configure the Real Time, Ready To Go, Private Chatting Application in VueJS (NodeJS, Socket.io, VueJS):
NodeJS Server Configuration
To configure the NodeJS server, create a new file named server.js
and add the following code:
const express = require('express');
const app = express();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
app.use(express.static('public'));
let users = [];
io.on('connection', (socket) => {
console.log('a new connection');
socket.on('join', (username) => {
users.push({ id: socket.id, username });
console.log(`user ${username} joined`);
});
socket.on('disconnect', () => {
console.log('user disconnected');
});
socket.on('message', (message) => {
io.emit('message', message);
});
});
server.listen(3000, () => {
console.log('Server started on port 3000');
});
This code sets up an Express.js server that serves static files from the public
directory and uses Socket.io to handle real-time communication.
VueJS Client Configuration
To configure the VueJS client, create a new file named main.js
and add the following code:
import Vue from 'vue';
import App from './App.vue';
import socket from 'socket.io-client';
Vue.config.productionTip = false;
const socket = socket('http://localhost:3000');
new Vue({
render: h => h(App),
}).$mount('#app');
This code sets up a new Vue.js instance and connects to the NodeJS server using the socket.io-client
library.
VueJS Component Configuration
To configure the VueJS component, create a new file named App.vue
and add the following code:
<template>
<div>
<h1>Real Time Chat</h1>
<ul>
<li v-for="message in messages" :key="message.id">
{{ message.text }}
</li>
</ul>
<input type="text" v-model="message" @keyup.enter="sendMessage">
<button @click="sendMessage">Send</button>
</div>
</template>
<script>
export default {
data() {
return {
messages: [],
message: ''
}
},
methods: {
sendMessage() {
socket.emit('message', this.message);
this.message = '';
}
}
}
</script>
This code sets up a Vue.js component that displays a list of messages and allows users to send new messages.
Private Chatting Configuration
To configure private chatting, create a new file named PrivateChat.vue
and add the following code:
<template>
<div>
<h1>Private Chat with {{ username }}</h1>
<ul>
<li v-for="message in messages" :key="message.id">
{{ message.text }}
</li>
</ul>
<input type="text" v-model="message" @keyup.enter="sendMessage">
<button @click="sendMessage">Send</button>
</div>
</template>
<script>
export default {
props: ['username'],
data() {
return {
messages: [],
message: ''
}
},
methods: {
sendMessage() {
socket.emit('message', this.message, this.username);
this.message = '';
}
}
}
</script>
This code sets up a Vue.js component that displays a private chat with a specific user.
Index.html Configuration
To configure the index.html file, add the following code:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Real Time Chat</title>
</head>
<body>
<div id="app"></div>
<script src="main.js"></script>
</body>
</html>
This code sets up the basic HTML structure for the application and includes the main.js
file that sets up the Vue.js instance.
package.json Configuration
To configure the package.json
file, add the following code:
{
"name": "real-time-chat",
"version": "1.0.0",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.17.1",
"socket.io": "^2.3.0",
"vue": "^2.6.12",
"vue-cli": "^3.0.0"
}
}
This code sets up the basic configuration for the application, including the start script and dependencies.
Note: This is just an example configuration and you may need to modify it to fit your specific use case.
Here are the features of the Real Time, Ready To Go, Private Chatting Application in VueJS (NodeJS, Socket.io, VueJS):
Developer Features:
- Extendability: Developer can extend this code matching his/her needs.
- Scope for adding own API calls according to the system in which it has to be integrated.
- Scope for extending this script as per specific needs.
Front End User Features:
- High End UI/UX
- Real Time chatting with real time typing status, real time message notifications.
- Real Time Online User Status
- Private Chatting Experience
Technologies Used:
- HTML
- CSS
- jQuery
- Socket.io
- NodeJS
- VueJS
- MongoDB
Requirements:
- npm (Node Packaging Manager) / NodeJS should be installed.
- MongoDB should be installed and configured.
Optional Installation Service:
- Server must be pre-configured with MongoDB and NodeJS (Cost: $9.95)
$12.00
There are no reviews yet.